rm(list = ls())

Install packages

library(mombf)
library(dplyr)
library(tidyr)
library(ggsci)
library(hdm)
library(glmnet)
library(ggplot2)
library(tidyverse)
library(HDCI)
library(gridExtra)
library(pROC)
library("adapt4pv")
library(readr)
library(dplyr)
library(knitr)
library(kableExtra)
library(stringr)
library(data.table)
library(stringr)
library(readr)
library(tidyverse)

Prep

Load data

# Load data
DIR <- '/Users/jonnycodd/Documents/MASTERS/Statistical Modeling and Inference/Project/data'

raw_train <- read.csv(file.path(DIR, 'realestate_train.csv'))
raw_test <- read.csv(file.path(DIR, 'realestate_test.csv'))

# Drop X 
raw_train$X <- NA
raw_test$X <- NA
n_addresses <- 10
dummy_addresses <- T
dummy_subdistricts <- T
dummy_coordinates <- F
square_cordinates <- T
qcuts <- 100
drop_prev_prices <- T

log_price <- T
# Filter addresses
address_counts <- raw_train %>% count(address_simple)
selected_addresses <- address_counts[address_counts$n > n_addresses, ]$address_simple

cat('Train size before', dim(raw_train), ': after', dim(raw_train[raw_train$address_simple %in% selected_addresses, ]))
Train size before 23770 478 : after 23432 478
raw_train <- raw_train[raw_train$address_simple %in% selected_addresses, ]

cat('Train size before', dim(raw_test), ': after', dim(raw_test[raw_test$address_simple %in% selected_addresses, ]))
Train size before 3200 478 : after 2941 478
raw_test <- raw_test[raw_test$address_simple %in% selected_addresses, ]

Address dummies

generate_dummies <- function(train, test, column) {
  # Combine train and test
  combined_data <- rbind(train, test)
  
  # Creating dummy variables (assuming 'category' is your categorical column)
  combined_data_dummy <- model.matrix(~ get(column) - 1, combined_data)
  
  col_names <- stringr::str_replace(colnames(combined_data_dummy), "get\\(column\\)", paste0(column, '_'))
  #print(col_names)
  colnames(combined_data_dummy) <- col_names
  
  # Splitting back into training and testing sets
  train_rows <- nrow(train)
  x_train_dummy <- combined_data_dummy[1:train_rows, ]
  x_test_dummy <- combined_data_dummy[(train_rows + 1):nrow(combined_data_dummy), ]
  
  # Add the dummy variables to the original dataframes
  train <- cbind(train, x_train_dummy)
  test <- cbind(test, x_test_dummy)
  
  return(list(train = train, test = test))
}

if (dummy_addresses) {
  result <- generate_dummies(raw_train, raw_test, 'address_simple')
  raw_train <- result$train
  raw_test <- result$test  
}

Subdistrict dummies

obtain_subdistrict <- function(df) {
  df$subdistrict <- sapply(strsplit(df$address_simple, ",\\s*"), function(x) x[[2]])
  df[df$subdistrict == 'Dubai', 'subdistrict'] <- sapply(strsplit(df[df$subdistrict == 'Dubai', 'address_simple'], ",\\s*"), function(x) x[[1]])  
  
  return(df)
}

if (dummy_subdistricts) {
  raw_train <- obtain_subdistrict(raw_train)
  raw_test <- obtain_subdistrict(raw_test)
  
  result <- generate_dummies(raw_train, raw_test, 'subdistrict')
  raw_train <- result$train
  raw_test <- result$test  
}

Coordinates

do_quantiles <- function(data, quantiles, prefix) {
    cuts <- cut(data, quantiles, include.lowest = T)
    cuts <- paste0(prefix, cuts)
    return(cuts)
}
  
combined_data <- rbind(raw_train, raw_test)

# Function to assign subregions
assign_subregion <- function(data, lat_breaks, long_breaks) {
  data$subregion <- with(data, paste(
    cut(lat, breaks = lat_breaks, labels = FALSE, include.lowest = TRUE),
    cut(lon, breaks = long_breaks, labels = FALSE, include.lowest = TRUE),
    sep = "_"
  ))
  return(data)
}

if (square_cordinates){
  
  # Lat
  lat_quantiles <- unique(quantile(combined_data$lat, 0:qcuts/qcuts))
  #combined_data$lat_cuts <- do_quantiles(combined_data$lat, quantiles, 'lat_')

  # Lon
  lon_quantiles <- unique(quantile(combined_data$lon, 0:qcuts/qcuts))
  #combined_data$lon_cuts <- do_quantiles(combined_data$lon, quantiles, 'lon_')
  
  # Assign subregions to both datasets
  raw_train <- assign_subregion(raw_train, lat_quantiles, lon_quantiles)
  raw_test <- assign_subregion(raw_test, lat_quantiles, lon_quantiles)

  result <- generate_dummies(raw_train, raw_test, 'subregion')
  raw_train <- result$train
  raw_test <- result$test  
    
}

if (dummy_coordinates) {
  # Lat
  quantiles <- unique(quantile(combined_data$lat, 0:qcuts/qcuts))
  raw_train$lat_cuts <- do_quantiles(raw_train$lat, quantiles, 'lat_')
  raw_test$lat_cuts <- do_quantiles(raw_test$lat, quantiles, 'lat_')
    
  # Lon
  quantiles <- unique(quantile(combined_data$lon, 0:qcuts/qcuts))
  raw_train$lon_cuts <- do_quantiles(raw_train$lon, quantiles, 'lon_')
  raw_test$lon_cuts <- do_quantiles(raw_test$lon, quantiles, 'lon_')


  # Lat
  result <- generate_dummies(raw_train, raw_test, 'lat_cuts')
  raw_train <- result$train
  raw_test <- result$test  
  
  # Lon
  result <- generate_dummies(raw_train, raw_test, 'lon_cuts')
  raw_train <- result$train
  raw_test <- result$test  
}
test <- raw_test 
train <-raw_train

# Convert date to numeric
train$date_added <- as.Date(train$date_added)

# Keep numeric columns
numeric <- sapply(train, is.numeric)
numeric_test <- sapply(train, is.numeric)

train <- train[, numeric]
test <- test[, numeric]

# Remove columns with 0 variance 
test= test[,apply(test, 2, var) > 0] #remove columns with 0 variance
train= train[,apply(train, 2, var) > 0] #remove columns with 0 variance

cat(dim(train), dim(test))
23432 1114 2941 1079
# To have same columns in train and test
train <- train[, intersect(names(train), names(test))]
test <- test[, intersect(names(train), names(test))]

cat(dim(train), dim(test))
23432 1075 2941 1075

Create additional variables

interaction terms

# Define create interactions terms function
create_interaction_terms <- function(data, variables) {
    # Identify columns that start with "community_"
    subdistrict_cols <- grep("^community_", names(data), value = TRUE)

    # Loop over these columns and create interaction terms
    for(col in subdistrict_cols) {
        for(var in variables) {
            # Check if the variable exists in the data
            if(var %in% names(data)) {
                # Create interaction term and add it to the data
                data[paste0(col, "_", var)] <- data[, col] * data[, var]
            } else {
                warning(paste("Variable", var, "not found in dataframe. Skipping."))
            }
        }
    }
    # Return the modified dataframe
    return(data)
}

# Define the list of variables for interaction
variables_to_interact <- c("beds", "area", "baths", "balcony", "parking", "swimming_pool", "furnished")

# Call the function with your dataframe and the list of variables
train <- create_interaction_terms(train, variables_to_interact)
test <- create_interaction_terms(test, variables_to_interact)

squared vars

train$area_sq <- train$area^2
test$area_sq <- test$area^2

train$bed_sq <- train$bed^2
test$bed_sq <- test$bed^2

train$baths_sq <- train$baths^2
test$baths_sq <- test$baths^2

Remove highly correlated variables

# Check for correlation
correlation_matrix <- cor(train)
high_correlation <- which(abs(correlation_matrix) > 0.99, arr.ind = TRUE)

# Return which variables are getting removex
high_correlation <- high_correlation[high_correlation[, 1] < high_correlation[, 2], ]
pairs_to_remove <- apply(high_correlation, 1, function(index) {
  pair <- colnames(train)[index]
  #cat("High correlation between:", pair[1], "and", pair[2], "\n")
  #cat("Removing:", pair[2], "\n\n")
  return(pair[2])
})

# Remove
test <- test[, !colnames(test) %in% pairs_to_remove]
train <- train[, !colnames(train) %in% pairs_to_remove]

Prepare dataframes

# Split into X and Y for scaling
x_train <- select(train, -price)

num_scale <- 1 # to make weights more interpretable
y_train_orig <- train$price/num_scale
if (log_price) {
  y_train <- log(train$price/num_scale)
} else{
  y_train <- train$price/num_scale
}

x_test <- select(test, -price)
y_test_orig <- test$price/num_scale
if (log_price) {
  y_test <- log(test$price/num_scale)
} else{
  y_test <- test$price/num_scale
}

# Save unscaled
x_train_unscaled <- x_train
x_test_unscaled <- x_test

# Scale 
x_train <- scale(x_train)
x_test <- scale(x_test)

# Create dfs
y_train_df <- data.frame(y_train)
x_train_df <- data.frame(x_train)
colnames(y_train_df)<-'price'

y_test_df <- data.frame(y_test)
x_test_df <- data.frame(x_test)
colnames(y_test_df)<-'price'

# Drop same price variables
if (drop_prev_prices) {
  x_test_df <- x_test_df %>% select(-contains("same"))
  x_train_df <- x_train_df %>% select(-contains("same"))
}

train_df<-cbind(x_train_df,y_train_df)
test_df<-cbind(x_test_df,y_test_df)

Define regression metrics

# Regression metrics
rmse <- function(observed, predicted) {
  sqrt(mean((observed - predicted) ^ 2))
}

log_rmse <- function(observed, predicted) {
  sqrt(mean((log(observed) - log(predicted)) ^ 2))
}

mape <- function(observed, predicted) {
  mean(abs((predicted - observed) / observed)) * 100
}

mae <- function(observed, predicted) {
  mean(abs(observed - predicted))
}

# Metrics CV
regression_metrics <- function(model, data, y_real, num_scale, y_wout_log) {
 
  pred <- predict(model, newx = as.matrix(data), s = fit.lasso$lambda.min, type = "response")
  
  if (log_price) {
      pred <- exp(pred)
      y_real <- y_wout_log
  }
  rmse_value <- rmse(y_real, pred)*num_scale
  mape <- mape(y_real, pred)
  mae <- mae(y_real, pred)*num_scale
  cat('\nRMSE:', rmse_value, 'MAPE:', mape, 'MAE:', mae) 
  
  return(list(rmse=rmse_value, mape=mape, mae=mae))
}
#colnames(x_train_df)

Summarize data

# Calculate statistics for y_train
n_obs_train <- length(y_train_df)
mean_train <- mean(y_train_df)
Warning: argument is not numeric or logical: returning NA
quartiles_train <- quantile(as.matrix(y_train_df), probs = c(0.25, 0.5, 0.75))

# Calculate statistics for y_test
n_obs_test <- length(y_test_df)
mean_test <- mean(y_test_df)
Warning: argument is not numeric or logical: returning NA
quartiles_test <- quantile(as.matrix(y_test_df), probs = c(0.25, 0.5, 0.75))

# Create the data frame with the statistics
stats_table <- data.frame(
  Dataset = c("y_train", "y_test"),
  Observations = c(n_obs_train, n_obs_test),
  Mean = c(mean_train, mean_test),
  `1st Quartile` = c(quartiles_train[1], quartiles_test[1]),
  Median = c(quartiles_train[2], quartiles_test[2]),
  `3rd Quartile` = c(quartiles_train[3], quartiles_test[3])
)

stats_table_long <- stats_table %>% 
  pivot_longer(cols = -Dataset, names_to = "Metric", values_to = "Value")

# Spread the long format table to wide format with one column for y_train and one for y_test
stats_table_wide <- stats_table_long %>% 
  pivot_wider(names_from = Dataset, values_from = Value)

# Create a rotated LaTeX formatted table
output_stats <- 0
if (output_stats == 1) {
  kable(stats_table_wide, format = "latex", booktabs = TRUE, caption = "Descriptive Statistics of y_train and y_test", row.names = FALSE) %>%
  kable_styling(full_width = FALSE, position = "center", latex_options = "striped") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#56B4E9")
}

LASSO

x_test_df[is.na(x_test_df)] <- 0
x_train_df[is.na(x_train_df)] <- 0

cat(dim(x_train_df))
23432 600

LASSO BIC

lasso.bic <- function(y,x,extended=FALSE) {
  #Select model in LASSO path with best BIC (using LASSO regression estimates)
  #Input
  # - y: vector with response variable
  # - x: design matrix
  #
  #Output: list with the following elements
  # - coef: LASSO-estimated regression coefficient with lambda set via BIC
  # - ypred: predicted y
  # - lambda.opt: optimal value of lambda
  # - lambda: data.frame with bic and number of selected variables for each value of lambda
  require(glmnet)
  fit <- glmnet(x=x,y=y,family='gaussian',alpha=1)
  pred <- cbind(1,x) %*% rbind(fit$a0,fit$beta)
  n <- length(y)
  p <- colSums(fit$beta!=0) + 1
  if (!extended){
    bic <- n * log(colSums((y-pred)^2)/length(y)) + n*(log(2*pi)+1) + log(n)*p 
  } else {
    bic <- n * log(colSums((y-pred)^2)/length(y)) + n*(log(2*pi)+1) + log(n)*p + 2*log(choose(ncol(x),p))
  }
  sel <- which.min(bic)
  beta <- c(fit$a0[sel],fit$beta[,sel]); names(beta)[1]= 'Intercept'
  ypred <- pred[,sel]
  ans <- list(coef=beta,ypred=ypred,lambda.opt=fit$lambda[sel],lambda=data.frame(lambda=fit$lambda,bic=bic,nvars=p))
  return(ans)
}
# Fit model
fit.lasso_ebic = lasso.bic(x=as.matrix(x_train_df), y=y_train ,extended = TRUE)
fit.lasso_ebic
$coef
                                                                                                                Intercept 
                                                                                                             1.392875e+01 
                                                                                                                     beds 
                                                                                                             1.170275e-01 
                                                                                                                    baths 
                                                                                                             8.861440e-03 
                                                                                                                     area 
                                                                                                             3.312712e-01 
                                                                                                                      lat 
                                                                                                             0.000000e+00 
                                                                                                                      lon 
                                                                                                            -6.086391e-02 
                                                                                                                  balcony 
                                                                                                             6.473341e-04 
                                                                                                                  parking 
                                                                                                             0.000000e+00 
                                                                                                            swimming_pool 
                                                                                                             7.615165e-05 
                                                                                                                furnished 
                                                                                                             5.283879e-03 
                                                                                           emirate_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                          emirate_avg_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                          emirate_std_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                   emirate_offplan_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                  emirate_offplan_avg_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                  emirate_offplan_std_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                     emirate_ready_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                    emirate_ready_avg_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                           emirate_n_transactions_shift3m 
                                                                                                             0.000000e+00 
                                                                                          emirate_avg_trans_value_shift3m 
                                                                                                             6.201986e-03 
                                                                                          emirate_std_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                   emirate_offplan_n_transactions_shift3m 
                                                                                                             1.621754e-03 
                                                                                  emirate_offplan_avg_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                  emirate_offplan_std_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                     emirate_ready_n_transactions_shift3m 
                                                                                                             0.000000e+00 
                                                                                    emirate_ready_avg_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                           emirate_n_transactions_shift6m 
                                                                                                             0.000000e+00 
                                                                                          emirate_avg_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                          emirate_std_trans_value_shift6m 
                                                                                                             2.616293e-05 
                                                                                   emirate_offplan_n_transactions_shift6m 
                                                                                                             7.096837e-03 
                                                                                  emirate_offplan_avg_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                  emirate_offplan_std_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                     emirate_ready_n_transactions_shift6m 
                                                                                                             0.000000e+00 
                                                                                    emirate_ready_avg_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                              comm_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                             comm_avg_trans_value_shift1m 
                                                                                                             2.208433e-02 
                                                                                             comm_std_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                      comm_offplan_n_transactions_shift1m 
                                                                                                             8.668232e-03 
                                                                                     comm_offplan_avg_trans_value_shift1m 
                                                                                                             1.397653e-03 
                                                                                     comm_offplan_std_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                        comm_ready_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                       comm_ready_avg_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                       comm_ready_std_trans_value_shift1m 
                                                                                                            -1.599737e-03 
                                                                                              comm_n_transactions_shift3m 
                                                                                                            -2.571412e-03 
                                                                                             comm_avg_trans_value_shift3m 
                                                                                                             1.246354e-02 
                                                                                             comm_std_trans_value_shift3m 
                                                                                                            -4.807071e-04 
                                                                                      comm_offplan_n_transactions_shift3m 
                                                                                                             0.000000e+00 
                                                                                     comm_offplan_avg_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                     comm_offplan_std_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                        comm_ready_n_transactions_shift3m 
                                                                                                            -5.002837e-03 
                                                                                       comm_ready_avg_trans_value_shift3m 
                                                                                                             4.827915e-03 
                                                                                       comm_ready_std_trans_value_shift3m 
                                                                                                            -7.973677e-04 
                                                                                              comm_n_transactions_shift6m 
                                                                                                             0.000000e+00 
                                                                                             comm_avg_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                             comm_std_trans_value_shift6m 
                                                                                                            -6.882975e-03 
                                                                                      comm_offplan_n_transactions_shift6m 
                                                                                                             4.147210e-03 
                                                                                     comm_offplan_avg_trans_value_shift6m 
                                                                                                            -1.678675e-03 
                                                                                     comm_offplan_std_trans_value_shift6m 
                                                                                                             1.335790e-03 
                                                                                        comm_ready_n_transactions_shift6m 
                                                                                                            -6.807745e-03 
                                                                                       comm_ready_avg_trans_value_shift6m 
                                                                                                             1.599786e-02 
                                                                                                  property_type_Townhouse 
                                                                                                             1.201665e-02 
                                                                                                      property_type_Villa 
                                                                                                             1.554450e-02 
                                                                                 community_Jumeirah.Beach.Residence..JBR. 
                                                                                                             0.000000e+00 
                                                                                     community_Jumeirah.Lake.Towers..JLT. 
                                                                                                            -4.042061e-02 
                                                                                  community_Jumeirah.Village.Circle..JVC. 
                                                                                                             0.000000e+00 
                                                                                            completion_status_constructed 
                                                                                                            -9.004946e-03 
                                                                                     completion_status_under.construction 
                                                                                                            -3.686504e-03 
                                                                                                 metro_JumeirahLakeTowers 
                                                                                                             3.224118e-02 
                                                                                                        metro_DubaiMarina 
                                                                                                            -1.863576e-02 
                                                                                            metro_JumeirahBeachResidence1 
                                                                                                             0.000000e+00 
                                                                                                  metro_Dubai.Marina.Mall 
                                                                                                             0.000000e+00 
                                                                                                    metro_AirportTerminal 
                                                                                                             0.000000e+00 
                                                                                                hospital_EmiratesHospital 
                                                                                                            -1.651125e-01 
                                                                                                   hospital_AsterHospital 
                                                                                                             0.000000e+00 
                                                                                                          market_Waitrose 
                                                                                                             0.000000e+00 
                                                                                                         market_Carrefour 
                                                                                                             0.000000e+00 
                                                                                                         market_Safestway 
                                                                                                            -2.315587e-02 
                                                                                               AED_EUR_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_GBP_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_RUB_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_RUB_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_JPY_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_CNY_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_CAD_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_CAD_price_q25_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_CAD_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_SAR_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_SAR_price_q25_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_SAR_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                           AED_SAR_price_low_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_CHF_price_mean_shift1m 
                                                                                                             7.497002e-03 
                                                                                               USD_BTC_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                             USD_BTC_price_median_shift1m 
                                                                                                             0.000000e+00 
                                                                                                USD_BTC_price_q25_shift1m 
                                                                                                             0.000000e+00 
                                                                                                USD_BTC_price_q75_shift1m 
                                                                                                            -1.865849e-04 
                                                                                          USD_BTC_price_high_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               USD_ETH_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                             USD_ETH_price_median_shift1m 
                                                                                                             0.000000e+00 
                                                                                                USD_ETH_price_q25_shift1m 
                                                                                                            -1.642078e-03 
                                                                                                USD_ETH_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                          USD_ETH_price_high_mean_shift1m 
                                                                                                             1.026729e-03 
                                                                                                SP_500_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                 SP_500_price_q25_shift1m 
                                                                                                             0.000000e+00 
                                                                                                 SP_500_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                                  DINV_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                 EMAAR_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                DEYAAR_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_EUR_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_GBP_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_RUB_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                             AED_RUB_price_median_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_RUB_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_RUB_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                           AED_RUB_price_low_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_JPY_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_CNY_price_mean_shift6m 
                                                                                                            -2.674944e-03 
                                                                                               AED_CAD_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_SAR_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                             AED_SAR_price_median_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_SAR_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_SAR_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                           AED_SAR_price_low_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_CHF_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_CHF_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                               USD_BTC_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                USD_BTC_price_q25_shift6m 
                                                                                                             2.880099e-04 
                                                                                                USD_BTC_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                          USD_BTC_price_high_mean_shift6m 
                                                                                                             1.875581e-07 
                                                                                               USD_ETH_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                             USD_ETH_price_median_shift6m 
                                                                                                             0.000000e+00 
                                                                                                USD_ETH_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                                USD_ETH_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                          USD_ETH_price_high_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                SP_500_price_mean_shift6m 
                                                                                                             1.086450e-02 
                                                                                                  DINV_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                 EMAAR_price_mean_shift6m 
                                                                                                             7.838879e-08 
                                                                                                DEYAAR_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                 DEYAAR_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                                 DEYAAR_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                                residential_index_shift1m 
                                                                                                             0.000000e+00 
                                                                                                residential_index_shift3m 
                                                                                                             0.000000e+00 
                                                                                                 commercial_index_shift1m 
                                                                                                             0.000000e+00 
                                                                                                 commercial_index_shift3m 
                                                                                                             0.000000e+00 
                                                                                                    general_index_shift1m 
                                                                                                             0.000000e+00 
                                                                        housing_water_electricity_gas_other.fuels_shift1m 
                                                                                                             1.596751e-03 
                                                                                                    general_index_shift6m 
                                                                                                             0.000000e+00 
                                                                        housing_water_electricity_gas_other.fuels_shift6m 
                                                                                                             0.000000e+00 
                                                                                                                 gdp_G.20 
                                                                                                             0.000000e+00 
                                                                                                                  gdp_G.7 
                                                                                                             0.000000e+00 
                                                                                                                 gdp_OECD 
                                                                                                             0.000000e+00 
                                                                                                                  gdp_USA 
                                                                                                             0.000000e+00 
                                                                                              gdp_construction_cost.index 
                                                                                                             0.000000e+00 
                                                                                         gdp_construction_non.residential 
                                                                                                             0.000000e+00 
                                                                                                         gdp_construction 
                                                                                                            -9.803358e-04 
                                                                                                     gdp_mining_quarrying 
                                                                                                             0.000000e+00 
                                                                                               gdp_real_estate_activities 
                                                                                                             0.000000e+00 
                                                                                                       gold_price_shift1m 
                                                                                                             0.000000e+00 
                                                                                                gold_price_change_shift1m 
                                                                                                             0.000000e+00 
                                                                                                     petrol_price_shift1m 
                                                                                                             2.514629e-03 
                                                                                              petrol_price_change_shift1m 
                                                                                                             0.000000e+00 
                                                                                                     diesel_price_shift1m 
                                                                                                             0.000000e+00 
                                                                                              diesel_price_change_shift1m 
                                                                                                             0.000000e+00 
                                                                                                   gasoline_price_shift1m 
                                                                                                             0.000000e+00 
                                                                                            gasoline_price_change_shift1m 
                                                                                                             0.000000e+00 
                                                                                                       gold_price_shift3m 
                                                                                                             0.000000e+00 
                                                                                                gold_price_change_shift3m 
                                                                                                             0.000000e+00 
                                                                                                     petrol_price_shift3m 
                                                                                                             8.735181e-03 
                                                                                              petrol_price_change_shift3m 
                                                                                                             0.000000e+00 
                                                                                                     diesel_price_shift3m 
                                                                                                             0.000000e+00 
                                                                                              diesel_price_change_shift3m 
                                                                                                             0.000000e+00 
                                                                                                   gasoline_price_shift3m 
                                                                                                             5.421337e-03 
                                                                                            gasoline_price_change_shift3m 
                                                                                                             0.000000e+00 
                                                                            address_simple_23.Marina..Dubai.Marina..Dubai 
                                                                                                            -1.759641e-04 
                                                                          address_simple_5242.Towers..Dubai.Marina..Dubai 
                                                                                                             1.375533e-01 
                                       address_simple_ACES.Chateau..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -8.457613e-03 
                                 address_simple_Al.Anbar.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai 
                                                                                                            -4.087293e-03 
                                         address_simple_Al.Bateen.Towers..The.Walk..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             3.612868e-02 
                                      address_simple_Al.Dana.Tower..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.558142e-02 
                                            address_simple_Al.Fattan.Marine.Towers..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -1.599322e-02 
                                                                 address_simple_Al.Majara..Al.Majara..Dubai.Marina..Dubai 
                                                                                                             2.179452e-02 
                                  address_simple_Al.Mesk.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai 
                                                                                                             6.045512e-03 
                                address_simple_Al.Murjan.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai 
                                                                                                            -2.152603e-03 
                                                       address_simple_Al.Sahab.Tower..Al.Sahab.Tower..Dubai.Marina..Dubai 
                                                                                                             1.459402e-02 
                                           address_simple_Al.Seef.Tower..JLT.Cluster.U..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             1.073369e-03 
                                          address_simple_Al.Shera.Tower..JLT.Cluster.E..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             3.733937e-03 
                                      address_simple_Al.Waleed.Paradise..JLT.Cluster.R..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.661291e-03 
                                             address_simple_ALCOVE..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -8.293355e-04 
                                                       address_simple_Amwaj..Amwaj..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -5.068396e-03 
                           address_simple_Arezzo..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -6.602821e-04 
                                     address_simple_Aria.Residence..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.366866e-04 
                             address_simple_Armada.Tower..Armada.Towers..JLT.Cluster.P..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -7.351819e-03 
                                  address_simple_Astoria.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.315331e-03 
                                                            address_simple_Attessa..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                             address_simple_Aurora..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             2.738629e-03 
                          address_simple_Autumn..Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.882894e-03 
                                   address_simple_Avanos.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             4.871286e-04 
                                                                                address_simple_Azure..Dubai.Marina..Dubai 
                                                                                                            -2.636148e-03 
                                                       address_simple_Bahar..Bahar..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -3.561296e-03 
                                                 address_simple_Banyan.Tree.Residences..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             2.265715e-02 
                                             address_simple_Bay.Central..Central.Tower...Bay.Central..Dubai.Marina..Dubai 
                                                                                                             3.878313e-03 
                                                             address_simple_Bay.Central..Bay.Central..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                          address_simple_Bay.Central..Dubai.Marina..Dubai 
                                                                                                             6.397822e-03 
                                                           address_simple_Beauport..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             6.641272e-03 
                                  address_simple_Belgravia.Heights..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.744375e-03 
                                   address_simple_Belgravia.Square..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.190975e-02 
                               address_simple_Belgravia..Belgravia..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.275665e-02 
                                          address_simple_Belgravia..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             8.929834e-03 
                                          address_simple_Belgravia..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.247254e-02 
                                  address_simple_Beverly.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             9.395942e-03 
                                     address_simple_Binghatti.Gate..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.905931e-03 
                                     address_simple_Binghatti.Gems..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -4.809618e-03 
                                  address_simple_Binghatti.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.189731e-02 
                                  address_simple_Binghatti.Jasmine..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.886497e-03 
                                   address_simple_Binghatti.Mirage..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                     address_simple_Binghatti.Rose..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                           address_simple_Blakely.Tower..Park.Island..Dubai.Marina..Dubai 
                                                                                                            -2.556961e-03 
                                      address_simple_Bloom.Heights..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.306926e-02 
                                       address_simple_Bloom.Towers..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.410756e-02 
                                                           address_simple_Bonaire.Tower..Park.Island..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                        address_simple_Bonnington.Tower..JLT.Cluster.J..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             1.511265e-02 
                                                                       address_simple_Botanica.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.179106e-02 
                                           address_simple_Botanica..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.173517e-03 
                                         address_simple_Cappadocia..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.130513e-02 
                                   address_simple_Catch.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.175037e-02 
                                                                          address_simple_Cayan.Tower..Dubai.Marina..Dubai 
                                                                                                             2.044113e-02 
                          address_simple_Chaimaa.Avenue.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             4.859437e-03 
                                   address_simple_Chaimaa.Premiere..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.106505e-03 
                                                                           address_simple_Ciel.Tower..Dubai.Marina..Dubai 
                                                                                                             2.022313e-02 
                                    address_simple_City.Apartments..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.010938e-03 
                                          address_simple_Concorde.Tower..JLT.Cluster.H..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -4.862767e-03 
                                                                    address_simple_Continental.Tower..Dubai.Marina..Dubai 
                                                                                                            -2.301482e-03 
                                  address_simple_Crystal.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.315923e-03 
                                       address_simple_DAMAC.Ghalia..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                        address_simple_Damac.Heights..Dubai.Marina..Dubai 
                                                                                                             3.095534e-02 
                           address_simple_Dar.Al.Jawhara.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.204490e-03 
                                                                address_simple_DEC.Tower..DEC.Towers..Dubai.Marina..Dubai 
                                                                                                            -1.562823e-02 
                                                                           address_simple_DEC.Towers..Dubai.Marina..Dubai 
                                                                                                            -5.665760e-03 
                       address_simple_Diamond.Views..Diamond.Views..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.084790e-02 
                                                                            address_simple_Dorra.Bay..Dubai.Marina..Dubai 
                                                                                                             1.222765e-02 
                                                            address_simple_Dream.Tower..Dream.Towers..Dubai.Marina..Dubai 
                                                                                                            -1.029806e-02 
                                                                         address_simple_Dream.Towers..Dubai.Marina..Dubai 
                                                                                                            -7.889141e-03 
                                        address_simple_Dubai.Arch.Tower..JLT.Cluster.G..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -3.940909e-03 
                                                                                       address_simple_Dubai.Marina..Dubai 
                                                                                                             2.338186e-06 
                                        address_simple_Dubai.Star.Tower..JLT.Cluster.L..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                               address_simple_Dusit.Princess.Rijas..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             7.852601e-03 
                                        address_simple_Eaton.Place..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.046744e-02 
                                                                      address_simple_Elite.Residence..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                   address_simple_Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -6.204528e-03 
                                                                   address_simple_Escan.Marina.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.112840e-02 
                                                         address_simple_Fairfield.Tower..Park.Island..Dubai.Marina..Dubai 
                                                                                                             7.633930e-03 
                              address_simple_FIVE.Jumeirah.Village..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.094400e-02 
                         address_simple_Florence..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                          address_simple_Fortunato..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.891321e-03 
                                 address_simple_Gardenia.Residency..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.791032e-03 
                         address_simple_Gardenia..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.526312e-03 
                                        address_simple_Global.Lake.View..JLT.Cluster.E..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.134761e-03 
                                     address_simple_Goldcrest.Executive..JLT.Cluster.C..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             1.625253e-04 
                                         address_simple_Goldcrest.Views..JLT.Cluster.J..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                         address_simple_Goldcrest.Views..JLT.Cluster.V..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                         address_simple_Green.Lakes..JLT.Cluster.S..Green.Lake.Towers...Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             3.004865e-03 
                                     address_simple_Hanover.Square..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.435732e-02 
                                   address_simple_Harrington.House..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             5.529601e-03 
                                       address_simple_Haven.Villas..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.812069e-03 
                                       address_simple_Hyati.Avenue..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.607324e-03 
                                   address_simple_Hyati.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                              address_simple_Icon.Tower..JLT.Cluster.L..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.969274e-03 
                                              address_simple_Icon.Tower..JLT.Cluster.M..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -8.030880e-03 
                                            address_simple_Indigo.Tower..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             5.173813e-03 
                                                                            address_simple_Iris.Blue..Dubai.Marina..Dubai 
                                                                                                             8.607321e-03 
                              address_simple_Joya.Verde.Residences..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.611927e-04 
                   address_simple_Jumeirah.Bay.X1..JLT.Cluster.X..Jumeirah.Bay.Towers...Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -4.931778e-03 
                                                                     address_simple_Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             0.000000e+00 
address_simple_Jumeirah.Gate.Tower..The.Address.Residences.Jumeirah.Resort.and.Spa..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             1.045141e-01 
                                                                         address_simple_Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                             address_simple_Jumeirah.Living.Marina.Gate..Marina.Gate..Dubai.Marina..Dubai 
                                                                                                             9.691117e-03 
                                                                      address_simple_Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                     address_simple_JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                     address_simple_JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.974469e-04 
                                   address_simple_Kensington.Manor..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.236471e-02 
                                                                             address_simple_KG.Tower..Dubai.Marina..Dubai 
                                                                                                            -3.477238e-03 
                                address_simple_Knightsbridge.Court..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.217192e-02 
                              address_simple_La.Riviera.Apartments..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             5.264343e-03 
                                   address_simple_La.Riviera.Azure..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.032709e-04 
              address_simple_La.Riviera.Estate..La.Riviera.Estates..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                 address_simple_La.Riviera.Estates..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -3.788640e-04 
                                                                           address_simple_La.Riviera..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                             address_simple_La.Vie..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             7.791445e-03 
                                            address_simple_Laguna.Tower..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             4.862625e-03 
                                         address_simple_Lake.City.Tower..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -6.985533e-03 
                                        address_simple_Lake.Point.Tower..JLT.Cluster.N..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -1.466382e-02 
                                        address_simple_Lake.Shore.Tower..JLT.Cluster.Y..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -8.641166e-03 
                                            address_simple_Lake.Terrace..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             7.165506e-03 
                                         address_simple_Lake.View.Tower..JLT.Cluster.B..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -1.174134e-03 
                                      address_simple_Lakeside.Residence..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             1.880798e-03 
                         address_simple_Lavender..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                       address_simple_Laya.Mansion..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.431135e-04 
                                    address_simple_Laya.Residences..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.370393e-03 
                                   address_simple_Le.Grand.Chateau..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.304690e-03 
                 address_simple_Le.Grand.Chateau..Le.Grand.Chateau..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.966461e-03 
                                                                           address_simple_LIV.Marina..Dubai.Marina..Dubai 
                                                                                                             1.966688e-02 
                                                                        address_simple_LIV.Residence..Dubai.Marina..Dubai 
                                                                                                             2.551014e-02 
                                      address_simple_Living.Garden..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.310204e-03 
                                    address_simple_LOCI.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                   address_simple_Lolena.Residence..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.619036e-02 
                                   address_simple_Lucky.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             9.203442e-03 
                                             address_simple_Luma21..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                            address_simple_Madina.Tower..JLT.Cluster.O..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.931052e-04 
                                                                        address_simple_Mag.218.Tower..Dubai.Marina..Dubai 
                                                                                                            -8.490503e-03 
                                               address_simple_Mag.Tower..JLT.Cluster.R..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                       address_simple_Magnolia..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                     address_simple_Manchester.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.677557e-02 
                          address_simple_Maple..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.150886e-03 
                                                                  address_simple_Marina.Arcade.Tower..Dubai.Marina..Dubai 
                                                                                                             1.281431e-02 
                                                                         address_simple_Marina.Crown..Dubai.Marina..Dubai 
                                                                                                            -8.673431e-03 
                                                      address_simple_Marina.Diamond..Marina.Diamonds..Dubai.Marina..Dubai 
                                                                                                            -2.544456e-02 
                                                             address_simple_Marina.Gate..Marina.Gate..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                 address_simple_Marina.Heights.Tower..Dubai.Marina..Dubai 
                                                                                                             6.421295e-03 
                                                                    address_simple_Marina.Opal.Tower..Dubai.Marina..Dubai 
                                                                                                            -7.086820e-03 
                                                                         address_simple_Marina.Pearl..Dubai.Marina..Dubai 
                                                                                                            -8.421058e-03 
                                                                      address_simple_Marina.Pinnacle..Dubai.Marina..Dubai 
                                                                                                            -4.056265e-02 
                                                           address_simple_Marina.Quays..Marina.Quays..Dubai.Marina..Dubai 
                                                                                                             2.785635e-02 
                                                   address_simple_Marina.Residence..Marina.Residence..Dubai.Marina..Dubai 
                                                                                                             8.252210e-04 
                                                                       address_simple_Marina.Terrace..Dubai.Marina..Dubai 
                                                                                                            -1.654430e-03 
                                                                         address_simple_Marina.Tower..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                 address_simple_Marina.View.Tower..Marina.View.Tower..Dubai.Marina..Dubai 
                                                                                                            -8.876724e-03 
                                                           address_simple_Marina.Wharf..Marina.Wharf..Dubai.Marina..Dubai 
                                                                                                             2.291989e-03 
                                      address_simple_Marwa.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.825290e-03 
                                   address_simple_Masaar.Residence..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.379213e-02 
                                          address_simple_MBL.Residences..JLT.Cluster.K..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                               address_simple_MBL.Royal..JLT.Cluster.K..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             5.215737e-03 
                 address_simple_MILANO.by.Giovanni.Boutique.Suites..JVC.District.17..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             4.047654e-03 
                       address_simple_Mulberry..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -9.761364e-04 
                                                     address_simple_Murjan..Murjan..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -1.197618e-02 
                                          address_simple_New.Dubai.Gate..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -1.118647e-02 
                                          address_simple_New.Dubai.Gate..JLT.Cluster.Q..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.029893e-02 
                                                                                address_simple_No..9..Dubai.Marina..Dubai 
                                                                                                             2.323379e-02 
                   address_simple_Noora.Residence..Noora.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.026798e-02 
                                            address_simple_O2.Residence..JLT.Cluster.O..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                           address_simple_O2.Tower..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.352160e-03 
                                                                        address_simple_Ocean.Heights..Dubai.Marina..Dubai 
                                                                                                             1.074031e-02 
                                 address_simple_Orchidea.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.258317e-03 
                                                                          address_simple_Orra.Marina..Dubai.Marina..Dubai 
                                                                                                             1.812005e-02 
                                   address_simple_Oxford.Boulevard..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             5.535518e-03 
                                   address_simple_Oxford.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.714485e-03 
                                   address_simple_Oxford.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -6.924609e-04 
                                             address_simple_Oxford..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.858170e-03 
                                                             address_simple_Paloma..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             3.865954e-03 
                                 address_simple_Pantheon.Boulevard..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -3.128374e-04 
                                    address_simple_Pantheon.Elysee..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.447901e-02 
                                    address_simple_Pantheon.Elysee..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.287902e-02 
                                    address_simple_Pantheon.Elysee..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.125828e-02 
                                    address_simple_Park.View.Tower..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.236465e-03 
                                         address_simple_Park.Vista..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.415990e-03 
                                   address_simple_Plaza.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.386451e-03 
                                     address_simple_Plazzo.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.454732e-03 
                                                                       address_simple_Princess.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.503058e-03 
                              address_simple_Pulse.Smart.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -6.877234e-03 
                                     address_simple_Reef.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.501275e-03 
                                       address_simple_Regina.Tower..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.079703e-04 
                                   address_simple_Rigel.Apartments..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                       address_simple_Rimal..Rimal..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -5.823524e-03 
                             address_simple_Rose..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.642982e-03 
                address_simple_Roxana.Residence..Roxana.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                  address_simple_Roxana.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.566466e-04 
                                              address_simple_Saba.Tower..JLT.Cluster.Q..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                                       address_simple_Sadaf..Sadaf..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -3.364034e-02 
                                       address_simple_Samana.Waves..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.032047e-02 
                                    address_simple_Sandoval.Garden..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.179290e-03 
                                                           address_simple_Sanibel.Tower..Park.Island..Dubai.Marina..Dubai 
                                                                                                             4.849162e-03 
                                                             address_simple_Se7en.City..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -7.842534e-04 
                                  address_simple_Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.861242e-02 
                                     address_simple_Serenity.Lakes..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.302824e-04 
                                  address_simple_Shamal.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -3.526130e-03 
               address_simple_Shamal.Residences..Shamal.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.761947e-04 
                                       address_simple_Shamal.Waves..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.734211e-03 
                                                       address_simple_Shams..Shams..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             0.000000e+00 
                                                            address_simple_Shemara..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                            address_simple_Siena..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                  address_simple_Signature.Livings..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.399157e-02 
                                                           address_simple_Silverene.Tower..Silverene..Dubai.Marina..Dubai 
                                                                                                             4.736030e-02 
                                                                        address_simple_Skyview.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.245026e-02 
                                     address_simple_Sobha.Daffodil..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                        address_simple_Sparkle.Tower..Sparkle.Towers..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                       address_simple_Sparkle.Towers..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                  address_simple_Spica.Residential..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -8.217079e-03 
                                                                         address_simple_Stella.Maris..Dubai.Marina..Dubai 
                                                                                                             2.252549e-02 
                                                                     address_simple_Studio.One.Tower..Dubai.Marina..Dubai 
                                                                                                             4.661417e-02 
                                                                         address_simple_Sulafa.Tower..Dubai.Marina..Dubai 
                                                                                                            -2.063570e-02 
                          address_simple_Summer..Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                     address_simple_TFG.Marina.Hotel..Dubai.Marina..Dubai 
                                                                                                             1.228626e-02 
                                                address_simple_The.Address.Dubai.Marina..Mall.Hotel...Dubai.Marina..Dubai 
                                                                                                             4.056777e-02 
                     address_simple_The.Address.Residences.Jumeirah.Resort.and.Spa..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             5.440063e-02 
                                                                        address_simple_The.Belvedere..Dubai.Marina..Dubai 
                                                                                                            -9.104522e-03 
                                                          address_simple_The.Jewel.Tower..The.Jewels..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                      address_simple_The.Manhattan..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.268223e-02 
                                           address_simple_The.Palladium..JLT.Cluster.C..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                               address_simple_The.Plaza.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                            address_simple_The.Point..Dubai.Marina..Dubai 
                                                                                                             1.544800e-02 
                                        address_simple_The.Portman..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.345040e-03 
                                                                    address_simple_The.Royal.Oceanic..Dubai.Marina..Dubai 
                                                                                                            -1.637293e-02 
                                         address_simple_The.Sloane..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                   address_simple_The.Square.Tower..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.354818e-06 
                                                                            address_simple_The.Torch..Dubai.Marina..Dubai 
                                                                                                            -1.496536e-02 
                                                           address_simple_The.Waves.Tower..The.Waves..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                              address_simple_The.Zen..Dubai.Marina..Dubai 
                                                                                                            -1.034236e-02 
                                                                           address_simple_Time.Place..Dubai.Marina..Dubai 
                                                                                                            -1.288433e-02 
                                              address_simple_Tower..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                      address_simple_Trident.Bayside..Dubai.Marina..Dubai 
                                                                                                            -7.829083e-04 
                                                              address_simple_Trident.Grand.Residence..Dubai.Marina..Dubai 
                                                                                                            -5.477223e-04 
                                         address_simple_Trident.Marinascape.Avant.Tower..Marinascape..Dubai.Marina..Dubai 
                                                                                                             1.961259e-03 
                                                address_simple_V3.Tower..JLT.Cluster.V..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -6.352265e-04 
                                                         address_simple_Vida.Residences.Dubai.Marina..Dubai.Marina..Dubai 
                                                                                                             7.574271e-02 
                                                                          address_simple_West.Avenue..Dubai.Marina..Dubai 
                                                                                                             2.209712e-02 
                                                address_simple_Wind.Tower..Wind.Towers..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -1.979713e-03 
                                                                            address_simple_Yacht.Bay..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                        address_simple_Zaya.Hameni..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.239240e-02 
                                                                        address_simple_Zumurud.Tower..Dubai.Marina..Dubai 
                                                                                                             2.655401e-03 
                                                                                                  subdistrict_Bay.Central 
                                                                                                             1.286281e-02 
                                                                                                 subdistrict_Dubai.Marina 
                                                                                                             0.000000e+00 
                                                                         subdistrict_Dubai.Marina.Towers..Emaar.6.Towers. 
                                                                                                             2.478832e-02 
                                                                                             subdistrict_Emirates.Gardens 
                                                                                                            -1.506782e-02 
                                                                                           subdistrict_Emirates.Gardens.2 
                                                                                                            -2.166670e-02 
                                                                                                subdistrict_JLT.Cluster.A 
                                                                                                             0.000000e+00 
                                                                                                subdistrict_JLT.Cluster.C 
                                                                                                             6.073088e-03 
                                                                                                subdistrict_JLT.Cluster.D 
                                                                                                             0.000000e+00 
                                                                                                subdistrict_JLT.Cluster.E 
                                                                                                             0.000000e+00 
                                                                                                subdistrict_JLT.Cluster.J 
                                                                                                             2.132154e-03 
                                                                                                subdistrict_JLT.Cluster.K 
                                                                                                             4.487640e-02 
                                                                                                subdistrict_JLT.Cluster.L 
                                                                                                            -9.260538e-03 
                                                                                                subdistrict_JLT.Cluster.O 
                                                                                                            -1.455330e-03 
                                                                                                subdistrict_JLT.Cluster.Q 
                                                                                                            -1.250043e-03 
                                                                                                subdistrict_JLT.Cluster.R 
                                                                                                            -7.470379e-03 
                                                                                                subdistrict_JLT.Cluster.V 
                                                                                                            -2.370092e-03 
                                                                               subdistrict_Jumeirah.Beach.Residence..JBR. 
                                                                                                             5.033408e-02 
                                                                                   subdistrict_Jumeirah.Lake.Towers..JLT. 
                                                                                                             0.000000e+00 
                                                                                subdistrict_Jumeirah.Village.Circle..JVC. 
                                                                                                            -2.767294e-04 
                                                                                              subdistrict_JVC.District.10 
                                                                                                             0.000000e+00 
                                                                                              subdistrict_JVC.District.11 
                                                                                                            -9.404392e-03 
                                                                                              subdistrict_JVC.District.12 
                                                                                                             0.000000e+00 
                                                                                              subdistrict_JVC.District.13 
                                                                                                             0.000000e+00 
                                                                                              subdistrict_JVC.District.14 
                                                                                                             2.417718e-02 
                                                                                              subdistrict_JVC.District.15 
                                                                                                             0.000000e+00 
                                                                                              subdistrict_JVC.District.18 
                                                                                                             0.000000e+00 
                                                                                                  subdistrict_Marina.Gate 
                                                                                                             1.025910e-01 
                                                                                             subdistrict_Marina.Promenade 
                                                                                                             4.367328e-02 
                                                                                                  subdistrict_Park.Island 
                                                                                                             7.193746e-03 
                                                                                            subdistrict_Seasons.Community 
                                                                                                            -3.431065e-02 
                                                                                             subdistrict_Tuscan.Residence 
                                                                                                            -1.934605e-02 
                                                                                                          subregion_10_86 
                                                                                                             0.000000e+00 
                                                                                                          subregion_11_62 
                                                                                                             1.012827e-03 
                                                                                                          subregion_11_69 
                                                                                                            -1.125683e-03 
                                                                                                          subregion_11_78 
                                                                                                            -1.696035e-02 
                                                                                                          subregion_11_79 
                                                                                                            -1.808131e-03 
                                                                                                          subregion_11_86 
                                                                                                             0.000000e+00 
                                                                                                          subregion_12_85 
                                                                                                            -1.461890e-03 
                                                                                                          subregion_12_88 
                                                                                                             1.993719e-02 
                                                                                                          subregion_13_81 
                                                                                                            -3.349973e-03 
                                                                                                          subregion_13_84 
                                                                                                             0.000000e+00 
                                                                                                          subregion_13_85 
                                                                                                            -3.453821e-05 
                                                                                                          subregion_19_62 
                                                                                                            -3.327304e-03 
                                                                                                           subregion_2_71 
                                                                                                             2.889080e-03 
                                                                                                           subregion_2_75 
                                                                                                            -1.141106e-02 
                                                                                                           subregion_2_76 
                                                                                                            -1.107234e-02 
                                                                                                          subregion_20_81 
                                                                                                             0.000000e+00 
                                                                                                          subregion_20_87 
                                                                                                             0.000000e+00 
                                                                                                          subregion_21_62 
                                                                                                             8.841333e-04 
                                                                                                          subregion_21_64 
                                                                                                             5.101044e-03 
                                                                                                          subregion_21_71 
                                                                                                             0.000000e+00 
                                                                                                          subregion_21_76 
                                                                                                             0.000000e+00 
                                                                                                          subregion_21_77 
                                                                                                            -2.017738e-03 
                                                                                                          subregion_21_81 
                                                                                                             1.063590e-03 
                                                                                                          subregion_21_87 
                                                                                                             0.000000e+00 
                                                                                                          subregion_22_69 
                                                                                                             0.000000e+00 
                                                                                                          subregion_22_70 
                                                                                                            -9.604404e-04 
                                                                                                          subregion_23_64 
                                                                                                             0.000000e+00 
                                                                                                          subregion_23_66 
                                                                                                             0.000000e+00 
                                                                                                          subregion_23_67 
                                                                                                            -7.295306e-04 
                                                                                                          subregion_23_68 
                                                                                                             3.140786e-04 
                                                                                                          subregion_23_70 
                                                                                                             1.609405e-03 
                                                                                                          subregion_23_71 
                                                                                                            -3.624252e-04 
                                                                                                          subregion_25_62 
                                                                                                            -1.096416e-02 
                                                                                                          subregion_25_87 
                                                                                                             0.000000e+00 
                                                                                                          subregion_27_70 
                                                                                                            -3.817840e-03 
                                                                                                          subregion_27_86 
                                                                                                            -3.194722e-03 
                                                                                                          subregion_28_11 
                                                                                                             0.000000e+00 
                                                                                                          subregion_28_70 
                                                                                                            -1.521384e-03 
                                                                                                          subregion_28_80 
                                                                                                            -8.380283e-04 
                                                                                                          subregion_29_75 
                                                                                                             0.000000e+00 
                                                                                                           subregion_3_61 
                                                                                                             4.702431e-03 
                                                                                                           subregion_3_73 
                                                                                                             0.000000e+00 
                                                                                                          subregion_30_75 
                                                                                                            -3.620997e-04 
                                                                                                          subregion_30_77 
                                                                                                             0.000000e+00 
                                                                                                          subregion_30_78 
                                                                                                            -5.104449e-04 
                                                                                                          subregion_30_80 
                                                                                                             0.000000e+00 
                                                                                                          subregion_30_86 
                                                                                                             1.760090e-03 
                                                                                                          subregion_31_76 
                                                                                                             5.297245e-04 
                                                                                                          subregion_38_23 
                                                                                                             0.000000e+00 
                                                                                                           subregion_4_74 
                                                                                                             0.000000e+00 
                                                                                                          subregion_40_11 
                                                                                                            -6.537351e-04 
                                                                                                           subregion_40_8 
                                                                                                             0.000000e+00 
                                                                                                           subregion_40_9 
                                                                                                            -2.850781e-03 
                                                                                                           subregion_41_9 
                                                                                                             0.000000e+00 
                                                                                                          subregion_43_17 
                                                                                                             5.397983e-03 
                                                                                                          subregion_43_28 
                                                                                                            -3.137082e-03 
                                                                                                           subregion_46_1 
                                                                                                             0.000000e+00 
                                                                                                          subregion_46_16 
                                                                                                             3.302790e-03 
                                                                                                           subregion_47_1 
                                                                                                             2.573074e-04 
                                                                                                           subregion_47_9 
                                                                                                             0.000000e+00 
                                                                                                          subregion_48_10 
                                                                                                             3.853991e-02 
                                                                                                           subregion_49_4 
                                                                                                             0.000000e+00 
                                                                                                           subregion_49_9 
                                                                                                            -9.339004e-04 
                                                                                                           subregion_50_5 
                                                                                                             1.359053e-03 
                                                                                                          subregion_51_23 
                                                                                                             0.000000e+00 
                                                                                                           subregion_51_9 
                                                                                                             0.000000e+00 
                                                                                                          subregion_52_12 
                                                                                                             0.000000e+00 
                                                                                                          subregion_52_13 
                                                                                                             5.842354e-03 
                                                                                                          subregion_52_23 
                                                                                                             5.443049e-04 
                                                                                                          subregion_53_10 
                                                                                                            -1.610128e-04 
                                                                                                           subregion_53_9 
                                                                                                            -8.575609e-04 
                                                                                                          subregion_54_21 
                                                                                                             8.949551e-03 
                                                                                                          subregion_55_13 
                                                                                                            -5.502363e-04 
                                                                                                          subregion_55_22 
                                                                                                             3.309683e-03 
                                                                                                          subregion_55_23 
                                                                                                             2.977464e-03 
                                                                                                          subregion_56_40 
                                                                                                             0.000000e+00 
                                                                                                          subregion_57_24 
                                                                                                             0.000000e+00 
                                                                                                          subregion_57_26 
                                                                                                             7.425261e-04 
                                                                                                          subregion_58_13 
                                                                                                             0.000000e+00 
                                                                                                          subregion_58_44 
                                                                                                            -2.467028e-03 
                                                                                                          subregion_59_19 
                                                                                                             1.781964e-03 
                                                                                                          subregion_59_46 
                                                                                                            -4.088396e-03 
                                                                                                           subregion_6_65 
                                                                                                            -9.099554e-04 
                                                                                                           subregion_6_66 
                                                                                                             0.000000e+00 
                                                                                                           subregion_6_73 
                                                                                                             0.000000e+00 
                                                                                                          subregion_60_15 
                                                                                                            -5.522312e-04 
                                                                                                          subregion_60_20 
                                                                                                             0.000000e+00 
                                                                                                          subregion_60_43 
                                                                                                             0.000000e+00 
                                                                                                          subregion_61_16 
                                                                                                            -2.742322e-03 
                                                                                                          subregion_61_17 
                                                                                                            -2.194045e-03 
                                                                                                          subregion_61_40 
                                                                                                             1.343888e-03 
                                                                                                          subregion_62_16 
                                                                                                             1.478685e-03 
                                                                                                          subregion_62_45 
                                                                                                            -4.027095e-04 
                                                                                                          subregion_63_18 
                                                                                                            -7.381715e-03 
                                                                                                          subregion_65_17 
                                                                                                            -7.126983e-03 
                                                                                                          subregion_66_19 
                                                                                                            -3.542489e-03 
                                                                                                          subregion_66_22 
                                                                                                             1.428867e-03 
                                                                                                          subregion_66_52 
                                                                                                             0.000000e+00 
                                                                                                          subregion_67_20 
                                                                                                             0.000000e+00 
                                                                                                          subregion_67_25 
                                                                                                            -1.604635e-04 
                                                                                                          subregion_67_38 
                                                                                                             0.000000e+00 
                                                                                                          subregion_67_54 
                                                                                                             0.000000e+00 
                                                                                                          subregion_68_54 
                                                                                                             1.558754e-03 
                                                                                                          subregion_69_36 
                                                                                                            -1.933679e-03 
                                                                                                          subregion_69_57 
                                                                                                             0.000000e+00 
                                                                                                           subregion_7_75 
                                                                                                             3.263516e-03 
                                                                                                          subregion_70_40 
                                                                                                            -4.987523e-04 
                                                                                                          subregion_70_58 
                                                                                                             6.220738e-04 
                                                                                                          subregion_71_25 
                                                                                                            -2.577150e-03 
                                                                                                          subregion_71_43 
                                                                                                            -6.525513e-03 
                                                                                                          subregion_71_58 
                                                                                                             1.783139e-03 
                                                                                                          subregion_72_22 
                                                                                                            -4.688980e-03 
                                                                                                          subregion_72_45 
                                                                                                            -6.819560e-03 
                                                                                                          subregion_73_26 
                                                                                                             0.000000e+00 
                                                                                                          subregion_73_46 
                                                                                                            -7.155405e-03 
                                                                                                          subregion_74_25 
                                                                                                            -6.347672e-04 
                                                                                                          subregion_74_30 
                                                                                                            -5.367506e-03 
                                                                                                          subregion_75_28 
                                                                                                             0.000000e+00 
                                                                                                          subregion_75_32 
                                                                                                            -3.737315e-03 
                                                                                                          subregion_75_47 
                                                                                                            -6.434407e-03 
                                                                                                          subregion_76_28 
                                                                                                            -4.320794e-03 
                                                                                                          subregion_76_33 
                                                                                                            -3.765825e-03 
                                                                                                          subregion_76_35 
                                                                                                             0.000000e+00 
                                                                                                          subregion_79_39 
                                                                                                             0.000000e+00 
                                                                                                          subregion_80_56 
                                                                                                             0.000000e+00 
                                                                                                          subregion_83_52 
                                                                                                            -1.006226e-03 
                                                                                                          subregion_85_47 
                                                                                                            -8.017094e-03 
                                                                                                          subregion_89_52 
                                                                                                            -7.056878e-04 
                                                                                                           subregion_9_84 
                                                                                                             0.000000e+00 
                                                                            community_Jumeirah.Beach.Residence..JBR._beds 
                                                                                                             1.244974e-02 
                                                                            community_Jumeirah.Beach.Residence..JBR._area 
                                                                                                             3.912230e-02 
                                                                           community_Jumeirah.Beach.Residence..JBR._baths 
                                                                                                            -8.037744e-04 
                                                                         community_Jumeirah.Beach.Residence..JBR._balcony 
                                                                                                             5.180098e-03 
                                                                         community_Jumeirah.Beach.Residence..JBR._parking 
                                                                                                             0.000000e+00 
                                                                   community_Jumeirah.Beach.Residence..JBR._swimming_pool 
                                                                                                             0.000000e+00 
                                                                       community_Jumeirah.Beach.Residence..JBR._furnished 
                                                                                                             0.000000e+00 
                                                                                community_Jumeirah.Lake.Towers..JLT._beds 
                                                                                                            -8.325302e-03 
                                                                                community_Jumeirah.Lake.Towers..JLT._area 
                                                                                                             2.266453e-02 
                                                                               community_Jumeirah.Lake.Towers..JLT._baths 
                                                                                                            -1.907515e-03 
                                                                             community_Jumeirah.Lake.Towers..JLT._balcony 
                                                                                                             4.587177e-03 
                                                                             community_Jumeirah.Lake.Towers..JLT._parking 
                                                                                                            -6.863897e-04 
                                                                       community_Jumeirah.Lake.Towers..JLT._swimming_pool 
                                                                                                             0.000000e+00 
                                                                           community_Jumeirah.Lake.Towers..JLT._furnished 
                                                                                                             4.199728e-03 
                                                                             community_Jumeirah.Village.Circle..JVC._beds 
                                                                                                             0.000000e+00 
                                                                             community_Jumeirah.Village.Circle..JVC._area 
                                                                                                             1.423924e-02 
                                                                            community_Jumeirah.Village.Circle..JVC._baths 
                                                                                                             1.584949e-02 
                                                                          community_Jumeirah.Village.Circle..JVC._balcony 
                                                                                                             0.000000e+00 
                                                                          community_Jumeirah.Village.Circle..JVC._parking 
                                                                                                            -1.096272e-03 
                                                                    community_Jumeirah.Village.Circle..JVC._swimming_pool 
                                                                                                            -2.050175e-03 
                                                                        community_Jumeirah.Village.Circle..JVC._furnished 
                                                                                                             0.000000e+00 
                                                                                                                  area_sq 
                                                                                                            -1.113189e-01 
                                                                                                                   bed_sq 
                                                                                                            -2.839193e-02 
                                                                                                                 baths_sq 
                                                                                                             0.000000e+00 

$ypred
       1        2        3        4        5        6        7        8        9       10       11       12       13 
14.06488 13.46782 13.28481 13.61750 14.01354 14.78569 13.00031 13.31850 13.80043 14.27583 14.34471 13.02994 13.57068 
      14       15       16       17       18       19       20       21       22       23       24       25       26 
13.07996 14.47435 14.45283 13.92880 13.31622 13.61043 14.43857 13.91680 13.75609 14.42351 14.16006 14.47854 13.91360 
      27       28       29       30       31       32       33       34       35       36       37       38       39 
13.90361 13.43392 12.84053 14.29834 14.37589 14.08261 13.43534 14.71948 13.20961 13.04236 14.43105 13.00723 14.70245 
      40       41       42       43       44       45       46       47       48       49       50       51       52 
14.27922 13.44584 13.81991 13.24813 13.43293 14.83464 13.72152 14.05324 13.03376 14.41324 14.98692 13.65383 14.25271 
      53       54       55       56       57       58       59       60       61       62       63       64       65 
13.44514 14.70186 14.17619 12.88091 14.01939 13.01470 14.11401 13.81678 13.84412 14.08043 13.99578 13.47127 13.51298 
      66       67       68       69       70       71       72       73       74       75       76       77       78 
14.84455 14.74994 14.04947 13.80359 14.04292 14.18797 13.90779 13.73346 14.42988 14.69568 13.53832 14.28582 13.00195 
      79       80       81       82       83       84       85       86       87       88       89       90       91 
14.67656 14.24433 13.86454 13.91120 13.39972 13.67642 13.63364 13.65673 13.61236 14.10051 14.14745 13.62142 13.80751 
      92       93       94       95       96       97       98       99      100      101      102      103      104 
13.91973 14.70749 13.21664 14.21633 14.70455 14.70260 14.99514 14.04502 13.77741 13.55845 13.12197 14.20797 13.06362 
     105      106      107      108      109      110      111      112      113      114      115      116      117 
14.72487 14.47541 13.72476 13.85243 13.97219 15.11172 13.69861 13.92307 14.39296 14.07421 13.47717 13.38186 13.38132 
     118      119      120      121      122      123      124      125      126      127      128      129      130 
14.59500 12.63903 15.35592 13.15602 14.04734 14.21817 14.55957 13.91413 13.92564 13.80253 13.47036 12.89224 13.42759 
     132      133      134      135      136      137      138      139      140      141      142      143      144 
14.03754 13.67046 13.48161 12.96013 13.36553 13.69216 13.43061 14.23712 13.40858 13.98675 14.11103 14.36771 13.67712 
     145      146      147      148      149      150      151      152      153      154      155      156      157 
14.45847 14.78473 12.57882 14.07280 14.11201 14.92616 13.40038 13.01189 14.45181 13.65313 14.23224 13.90014 13.86873 
     158      159      160      161      162      163      164      165      166      167      168      169      170 
14.54318 13.89732 14.51414 13.62835 13.34097 14.66740 13.26359 14.37572 14.30628 13.44585 14.32229 14.44361 13.45344 
     171      172      173      174      175      176      177      178      179      180      181      182      183 
13.78773 13.14092 14.97148 13.06099 15.17788 15.16567 14.52776 14.39382 13.06475 14.71624 14.43189 13.37788 14.38380 
     184      185      186      187      188      189      190      191      192      193      194      195      196 
13.04396 13.79230 14.63228 13.44770 13.79314 15.14462 14.49748 14.32654 13.92543 13.79251 13.43580 14.14619 13.60308 
     197      198      199      200      201      202      203      204      205      206      207      208      209 
13.67384 14.31251 15.13519 13.97863 13.42571 15.15572 13.51643 14.74899 14.14845 14.15628 13.46143 14.70455 14.52597 
     210      211      212      213      214      215      216      217      218      219      220      221      222 
13.63114 12.88990 14.12380 13.72720 14.14273 13.98333 14.55742 13.57511 13.88541 14.22654 13.47474 13.42314 14.31722 
     223      224      225      226      227      228      229      230      231      232      233      234      235 
13.86742 14.21468 12.77314 13.73531 13.01268 13.42322 14.78530 13.79665 14.39600 15.02956 13.79942 14.71451 14.06483 
     236      237      238      239      240      241      242      243      244      245      246      247      248 
13.38894 14.49751 14.11264 14.79036 12.88158 13.54175 13.32003 14.28171 13.86066 14.32377 12.86545 14.09103 14.48136 
     249      250      251      252      253      254      255      256      257      258      259      260      261 
13.83931 14.00388 14.40626 13.47496 14.71218 14.07486 14.67641 13.71247 13.73567 14.70774 14.05818 13.70342 15.09806 
     262      263      264      265      266      267      268      269      270      271      272      273      274 
13.58297 14.59823 14.15498 13.56416 14.79639 13.67898 13.91822 13.70473 13.84353 13.99414 13.31653 14.14583 14.67948 
     275      276      278      279      280      281      282      283      284      285      286      287      288 
14.02748 14.00484 13.45383 13.71674 13.14985 13.60583 14.21427 14.22464 14.35541 13.98863 13.16219 13.75036 13.77655 
     289      290      291      292      293      294      295      296      297      298      299      300      301 
13.39852 13.90043 13.67055 13.71073 14.55072 14.56531 13.91091 13.88293 14.99565 14.66881 14.01601 13.89546 14.11639 
     302      303      304      305      306      307      308      309      310      311      312      313      314 
14.04674 14.15787 14.59261 13.58643 12.87772 14.09995 14.24804 14.15969 14.80873 13.43495 14.58527 14.03104 13.68876 
     315      316      317      318      319      320      321      322      323      324      325      326      327 
12.84479 13.52352 13.55041 14.18537 13.88062 13.73342 14.05355 12.92744 13.42721 13.61694 14.70514 14.15261 14.41888 
     328      329      330      331      332      333      334      335      336      337      338      339      340 
13.70829 13.28254 14.67064 14.70337 14.21778 14.65470 13.07813 14.28930 13.52475 13.22778 14.08525 14.71300 13.64724 
     341      342      343      344      345      346      347      348      349      350      351      352      353 
14.09044 14.08006 14.16712 13.00084 14.40493 14.30299 14.94492 14.80874 14.12393 13.53353 13.70561 13.74381 13.45530 
     354      355      356      357      358      359      360      361      362      363      364      365      366 
13.58167 14.69340 13.96484 13.64119 13.40718 13.92086 13.97863 14.61666 14.12239 13.77824 14.72108 13.58325 14.12393 
     367      369      370      371      372      373      374      375      376      377      378      379      380 
13.87507 13.91892 13.52629 14.05644 13.54032 13.49712 14.43279 13.55227 13.93476 13.18257 13.88813 13.97195 14.82789 
     381      382      383      384      385      386      387      388      389      390      391      392      393 
13.71240 13.14191 14.09073 13.01023 13.34382 12.90860 13.07225 14.38547 13.42377 13.39206 14.09746 13.56344 13.25978 
     394      395      396      397      398      399      400      401      402      403      404      405      406 
12.83417 14.01490 14.33900 14.65221 12.81974 14.25212 13.80828 13.86939 13.73713 14.05705 13.92323 14.48751 14.42425 
     407      408      409      410      411      412      413      414      415      416      417      418      419 
14.30895 13.82547 13.80381 14.17045 13.67101 14.13818 14.31633 14.44840 13.65463 12.97888 13.50357 14.68460 13.49774 
     420      421      422      423      424      425      426      427      428      429      430      431      432 
13.80669 14.51338 14.17328 13.12430 13.31485 14.27466 13.61045 14.01694 13.71338 12.66340 14.88103 14.30164 14.22263 
     433      434      435      436      437      438      439      440      441      442      443      444      445 
14.54993 13.72419 13.64207 13.94193 13.70068 15.43450 13.44181 14.45898 13.74194 13.98276 13.53005 14.39478 13.89887 
     446      447      448      449      450      451      452      453      454      455      456      457      458 
13.07093 14.99363 12.98294 13.44475 13.39220 14.60486 14.08246 13.62864 12.91206 13.70723 13.46031 13.47248 13.48026 
     459      460      461      462      463      464      465      466      467      468      469      470      471 
14.15952 14.88835 14.01787 14.05036 13.91413 13.81585 13.45323 14.08374 13.80123 13.31228 14.50069 14.13144 13.72114 
     472      473      474      475      476      477      478      479      480      481      482      483      484 
14.23859 15.36641 14.62164 13.32233 14.37218 14.09702 13.66708 14.30330 14.24890 13.84196 13.00427 13.23253 14.83641 
     485      486      487      488      489      490      491      492      493      494      495      496      497 
13.66306 13.56129 13.46321 13.84191 13.01303 14.40624 13.41147 13.81487 13.43520 13.63339 12.59374 14.71189 14.13072 
     498      499      500      501      502      503      504      505      506      508      509      510      511 
14.72019 13.82526 13.24118 13.60789 13.71520 14.05983 14.01332 14.01479 12.88995 14.24406 14.15324 13.56210 14.29329 
     512      513      514      515      516      517      518      519      520      521      522      523      524 
12.74948 14.68275 14.16049 13.15064 13.72971 14.95919 13.46617 14.82133 13.53772 13.56814 13.80555 13.67028 12.86576 
     525      526      527      528      529      530      531      532      533      534      535      536      537 
13.35420 14.45230 13.89554 12.82881 13.26178 12.92915 14.33375 13.84336 13.84305 13.55223 14.25454 14.63581 13.32428 
     538      539      540      541      542      543      544      545      546      547      548      549      550 
13.58924 13.98015 13.47522 12.86585 14.31158 14.60775 13.70692 14.32389 13.68488 13.50079 13.66929 13.89672 14.18713 
     551      552      553      554      555      556      557      558      559      560      561      562      563 
12.89381 13.90883 14.30393 14.93330 14.57177 13.44099 13.72944 14.44600 13.54899 14.38319 13.24342 13.32323 13.46849 
     564      565      566      567      568      569      570      571      572      574      575      576      577 
13.53816 13.09834 14.42200 13.86001 14.25870 13.76896 13.74931 13.88393 14.51654 14.56763 13.39602 13.55730 14.20779 
     578      579      580      581      582      583      584      585      586      587      588      590      591 
14.02898 14.23823 13.56579 13.03235 13.88245 14.72561 14.55516 13.91831 13.04985 13.92683 13.45118 13.12807 15.01862 
     592      593      594      595      596      597      598      599      600      601      602      603      604 
14.13113 13.11663 14.71431 13.41938 14.41864 13.12088 14.09630 14.63995 13.34141 14.25251 14.61098 13.44738 13.14202 
     606      607      608      609      610      611      612      613      614      615      616      617      618 
14.40449 13.59186 13.54530 14.20607 14.69487 12.97186 13.49214 13.70581 13.03995 14.40707 14.21716 14.76625 13.94437 
     619      620      621      622      623      624      625      626      627      628      629      630      631 
13.24065 14.49787 14.55097 15.24736 14.39753 13.18649 13.51812 14.05242 13.31431 13.02894 13.39610 13.65513 14.39478 
     632      633      634      635      636      637      638      639      640      641      642      643      644 
14.02994 13.92608 14.41459 13.34366 14.43613 14.50808 13.50933 13.54796 13.84631 14.04544 13.36295 13.45960 13.62252 
     645      646      647      648      649      650      651      652      653      654      655      656      657 
14.52128 13.04444 14.47988 13.45111 13.00833 13.14202 14.39583 13.56226 14.59261 13.13895 13.71270 13.02553 14.24638 
     658      659      660      661      662      663      664      665      666      667      668      669      670 
13.12244 14.72312 13.75064 13.34434 14.29002 14.33117 13.97671 13.91652 13.50758 13.12851 13.05068 14.22689 13.90492 
     671      672      673      674      675      676      677      678      679      680      681      682      683 
14.73355 13.86678 14.72090 15.02965 14.68904 14.87731 14.02872 14.67650 14.71945 12.93840 13.51283 14.44361 14.37617 
     684      685      686      687      688      689      690      691      692      693      694      695      696 
14.01208 14.93042 13.52815 14.65049 14.58783 14.56922 13.14202 13.41943 15.16787 13.71671 14.94538 13.91380 13.03789 
     697      698      699      700      701      702      703      704      705      706      707      708      709 
13.44186 13.93482 15.38069 14.55981 15.15627 15.02965 13.88218 13.45603 15.17533 13.30522 13.46321 14.99530 14.66740 
     710      711      712      713      714      715      716      717      718      719      720      721      722 
13.14734 13.67928 13.64593 14.36402 15.02965 13.65614 14.79113 15.38717 14.79189 14.56463 14.70501 14.27645 13.91402 
     723      724      725      726      727      728      729      730      731      732      733      734      735 
14.03103 13.38656 13.88254 13.96027 14.00868 14.14745 15.02965 13.75076 13.54814 13.54377 14.19731 14.15436 14.10519 
     736      737      738      739      740      741      742      743      744      745      746      747      748 
14.28598 13.47925 13.74331 13.20120 14.34471 13.80066 14.58919 14.42765 14.25470 13.23996 14.84029 14.43320 14.72811 
     749      750      751      752      753      754      755      756      757      758      759      760      761 
13.55381 13.41732 14.61710 13.71627 14.43379 13.79166 13.43406 13.61445 13.44195 13.96759 14.43227 13.85934 12.86740 
     762      763      764      765      766      767      768      769      770      771      772      773      774 
13.63692 14.34234 13.94790 14.22690 13.80793 14.31924 13.14202 13.39288 14.51357 15.04053 12.61075 15.18474 14.38748 
     775      776      777      778      779      780      781      782      783      784      785      786      787 
15.02965 13.94448 13.87252 13.66832 13.30102 13.53782 13.57984 12.99805 13.51173 14.54045 14.47886 14.42436 14.72624 
     788      789      790      791      792      793      794      795      796      797      798      799      800 
13.39370 13.54678 15.17787 14.03830 14.03185 12.89557 13.37793 14.57367 15.11693 13.02994 14.03595 13.44682 14.22945 
     801      802      803      804      805      806      807      808      809      810      811      812      813 
13.91314 14.97602 14.23711 13.69590 13.51884 13.51702 15.17398 15.46605 15.08968 14.30663 14.27645 14.97950 14.22742 
     814      815      816      817      818      819      820      821      822      823      824      825      826 
14.98852 14.40025 14.73323 15.15244 13.47560 13.50957 13.83191 14.20938 13.18117 13.44745 14.42832 14.32801 14.08050 
     827      828      829      830      831      832      833      834      835      836      837      838      839 
13.87544 14.39267 14.19606 14.41162 14.37260 13.91141 12.84847 13.52804 15.02692 14.58092 14.52268 12.78024 14.09972 
     840      841      842      843      844      845      846      847      848      849      850      851      852 
14.49370 13.65530 14.42499 13.96364 13.49485 13.98748 13.95324 13.71664 14.27308 13.79056 13.82939 14.79247 13.74073 
     853      854      855      856      857      858      859      860      861      862      863      864      865 
13.38162 13.51546 13.92592 13.46834 15.09475 14.51722 14.23805 14.28416 13.91767 13.46892 13.35045 14.11138 13.98330 
     866      867      868      869      870      871      872      873      874      875      876      877      878 
13.71108 12.64899 13.71158 14.04385 13.63724 15.12774 13.51891 13.83805 14.78925 13.90513 13.50003 13.13759 12.93978 
     879      880      881      882      883      884      885      886      887      888      889      890      891 
13.44205 13.89732 14.62705 14.32982 13.97679 14.38087 13.74710 14.23124 13.87612 13.90955 13.12638 13.55184 14.04109 
     892      894      895      896      897      898      899      900      901      902      903      904      905 
14.41324 13.38254 13.39989 13.58559 14.13457 13.48151 13.07258 13.27902 13.70114 13.54983 13.80652 14.03980 14.38483 
     906      907      908      909      910      911      912      913      914      915      916      917      918 
13.37155 13.62109 13.15100 13.74901 13.46810 14.47141 13.73689 14.73660 13.33622 12.93717 13.90378 14.71168 13.39645 
     919      920      921      922      923      924      925      926      927      928      929      930      931 
14.03574 13.71087 12.78783 14.72962 13.49601 13.38826 13.32678 14.78009 14.70405 13.28081 14.49353 13.39115 13.21386 
     932      933      934      935      936      937      938      939      940      941      942      943      944 
13.18908 14.08078 13.46817 13.72125 14.16286 13.26555 14.52391 14.69781 13.73536 14.68275 13.54905 14.35300 13.95428 
     945      946      947      948      949      950      951      952      953      954      955      956      957 
14.07227 14.14865 14.88841 13.26197 14.32880 14.23803 14.25220 13.73600 13.73127 14.40541 14.88978 14.11976 14.25697 
     958      959      960      961      962      963      964      965      966      967      968      969      970 
13.91918 13.87370 14.41277 14.11890 14.19772 12.86991 13.20614 13.17623 12.96189 13.40247 14.57159 14.39700 14.69037 
     971      972      973      974      975      976      977      978      979      980      981      982      983 
12.99594 14.07012 13.96630 12.74296 13.54442 14.28582 14.58154 15.11934 14.53319 13.58674 14.43909 14.43902 14.23790 
     984      985      986      987      988      989      990      991      992      993      994      995      996 
13.74977 13.82555 13.93738 13.43932 14.28859 14.42904 13.44297 13.22529 13.68057 13.64547 13.80447 14.87180 14.22670 
     997      998      999     1000     1001     1002     1003     1004     1005     1006     1007     1008 
13.41961 13.75539 14.23816 14.01491 12.87015 14.20864 14.07935 13.65782 14.35789 14.29602 14.16937 14.25139 
 [ reached getOption("max.print") -- omitted 22432 entries ]

$lambda.opt
[1] 0.0002597702

$lambda
NA

Ouput coefficients

LASSO CV

Fit model

# Fit model
fit.lasso = cv.glmnet(x=as.matrix(x_train_df), y=y_train, nfolds=10)
View(coef_table_ebic_output)
View(coef_table_ebic_output)
View(coef_table_ebic_output)
fit.lasso

Call:  cv.glmnet(x = as.matrix(x_train_df), y = y_train, nfolds = 10) 

Measure: Mean-Squared Error 

       Lambda Index Measure        SE Nonzero
min 4.041e-05   100 0.01851 0.0002511     431
1se 2.598e-04    80 0.01876 0.0002435     372

###Test out of sample

# TEST: RMSE: 330771.3 MAPE: 14.14537 MAE: 186598.
q <- regression_metrics(fit.lasso, x_test_df, y_test, num_scale, y_test_orig)

RMSE: 352252.3 MAPE: 14.32225 MAE: 190489.3
# TRAIN: RMSE: 222874.8 MAPE: 10.37756 MAE: 142418.3
q <- regression_metrics(fit.lasso, x_train_df, y_train, num_scale, y_train_orig)

RMSE: 222038.4 MAPE: 10.32769 MAE: 141757.7

Ouput coefficients

# Extract coefficients
coef_lasso <- predict(fit.lasso, type = "coefficients", s = fit.lasso$lambda.min)
coef_matrix <- as.matrix(coef_lasso)

# Output non zero coefficients
non_zero <- coef_matrix !=0
coef_table <- data.frame(Variable = rownames(coef_matrix)[non_zero], Coefficients = coef_matrix[non_zero])
coef_table <- coef_table[order(-abs(coef_table$Coefficients)),]
coef_table$Coefficients <- round(coef_table$Coefficients, digits = 4)
coef_table$Coefficients <- format(coef_table$Coefficients, scientific = FALSE)
coef_table_output <- coef_table[0:20,]
coef_table_output

Ouput collapsed coeffs

# Group prefixes for regression output
coef_table <- coef_table %>%
  mutate(prefix = case_when(
    str_detect(Variable, "address_simple_") ~ "Address indicators",
    str_detect(Variable, "AED_") ~ "AED exchange rates",
    str_detect(Variable, "comm_") ~ "Comm variables",
    str_detect(Variable, "community_") ~ "Community indicators",
    str_detect(Variable, "emirate_") ~ "Emirate variables",
    str_detect(Variable, "area_sq") ~ "Area squared",
    str_detect(Variable, "area") ~ "Area",
    str_detect(Variable, "balcony") ~ "# Balconys",
    str_detect(Variable, "baths_sq") ~ "# Balconys squared",
    str_detect(Variable, "bed_sq") ~ "# Beds squared",
    str_detect(Variable, "bed") ~ "# Beds",
    str_detect(Variable, "furnished") ~ "# Furnished indicator",
    str_detect(Variable, "gold") ~ "Gold price",
    str_detect(Variable, "metro") ~ "Distance to metro",
    str_detect(Variable, "parking") ~ "Parking indicator",
    str_detect(Variable, "lon") ~ "Longitude",
    str_detect(Variable, "gdp") ~ "GDP",
    str_detect(Variable, "hospital") ~ "Distance to hospital",
    str_detect(Variable, "subregion") ~ "Region indicators (by geographic coordinates)",
    str_detect(Variable, "market") ~ "Distance to grocery store",
    str_detect(Variable, "parking") ~ "Parking indicator",
    str_detect(Variable, "subdistrict") ~ "Subdistrict indicators",
    str_detect(Variable, "swimming_pool") ~ "Swimming pool indicator",
    str_detect(Variable, "USD_BTC") ~ "USC-crypto exchange rate",
    str_detect(Variable, "(Intercept)") ~ "(Intercept)",
    TRUE ~ "Misc" # For all other cases
  ))
# Collapse the dataframe to only keep the first instance of each prefix
# and count the number of variables of each type
coef_table$Coefficients <- as.numeric(coef_table$Coefficients)
collapsed_coef_matrix <- coef_table %>%
  group_by(prefix) %>%
  summarise(Mean = mean(100*Coefficients),
            Min = min(100*Coefficients),
            Max = max(100*Coefficients),
            Count = n()) %>%
  mutate(Mean = round(Mean, 2),
         Min = round(Min, 2),
         Max = round(Max, 2)) %>%
  arrange(desc(Count))  # Sorting by Max in descending order


# View the collapsed dataframe
print(collapsed_coef_matrix)

# Output to Latex
output_lasso_2 <- F
if (output_lasso_2) {
  kable(collapsed_coef_matrix, format = "latex", booktabs = TRUE, caption = "LASSO Regression results", row.names = FALSE) %>%
  kable_styling(full_width = FALSE, position = "center") %>%
  column_spec(1, border_right = TRUE) %>%
  column_spec(2, width = "2em") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#56B4E9")
}

Investigate percentage error

# Average percentage error 
pred <- predict(fit.lasso, newx = as.matrix(x_test_df), s = fit.lasso$lambda.min, type = "response")
  
if (log_price) {
    pred <- exp(pred)
    y_test <- y_test_orig
}

compare_df <- data.frame(y_test = y_test, predictions = pred)
compare_df$perc_error <- abs((compare_df$y_test-compare_df$s1)/compare_df$y_test)*100
compare_df$error <- abs(compare_df$s1 -compare_df$y_test)

# Calculate the deciles
deciles <- quantile(compare_df$perc_error, probs = seq(0, 1, by = 0.1), na.rm = TRUE)
print(deciles)
          0%          10%          20%          30%          40%          50%          60%          70%          80% 
1.570442e-03 2.015752e+00 3.922690e+00 6.147535e+00 8.574767e+00 1.101259e+01 1.383681e+01 1.733990e+01 2.201897e+01 
         90%         100% 
2.923620e+01 2.147729e+02 

Graphs

# Prepare data for graphs 
test_graph <- data.frame(x_test_unscaled)
test_graph$perc_error <- compare_df$perc_error
test_graph$error  <- compare_df$error

test_graph$price <- compare_df$y_test
test_graph 
# Graph abs error
plot_abs_error<- ggplot(test_graph, aes(x = price, y = error)) +
  theme_minimal() +
  geom_point(color = '#1f77b4' ,size = 0.5) +  # Scatter plot points
  xlab("Price") +
  ylab("Absolute Error") + 
    theme(legend.position="none",
        text = element_text(size = 16),  # Adjust the font size here
        axis.title = element_text(size = 16),  # Adjust the title font size
        axis.text = element_text(size = 10)) +  # Adjust the axis text font size
  scale_x_continuous(labels = scales::comma) 
plot_abs_error

# Graph percentage error
plot_perc_error<- ggplot(test_graph, aes(x = price, y = perc_error)) +
  theme_minimal() +
  geom_point(color = '#1f77b4' ,size = 0.5) +  # Scatter plot points
  xlab("Price") +
  ylab("Percentage Error") + 
    theme(legend.position="none",
        text = element_text(size = 16),  # Adjust the font size here
        axis.title = element_text(size = 16),  # Adjust the title font size
        axis.text = element_text(size = 10)) +  # Adjust the axis text font size
  scale_x_continuous(labels = scales::comma) 
plot_perc_error

# Graph prediction error

#Prepare data
test_graph_dt <- test_graph %>% as.data.table

test_graph_dt[, community := 'Dubai Marina']

test_graph_dt<- test_graph_dt %>%
  .[community_Jumeirah.Beach.Residence..JBR.==T, community := 'Jumeirah Beach \n Residence (JBR)'] %>%
  .[community_Jumeirah.Lake.Towers..JLT.==T, community := 'Jumeirah Lake \n Towers (JLT)'] %>%
  .[community_Jumeirah.Village.Circle..JVC.==T, community := 'Jumeirah Village \n Circle (JVC)']


# Produce plot
plot_perc_error_community <- ggplot(test_graph_dt, aes(y=community, x=perc_error, color=community)) + 
  geom_violin(aes(fill = community,
                  fill = after_scale(colorspace::lighten(fill, .2))),
              draw_quantiles = c(0.05, 0.25, 0.5, 0.75, 0.95),
              size = 0.2, scale='width', colour = "black") +
  theme_minimal() + 
  theme(legend.position="none",
        text = element_text(size = 16),  # Adjust the font size here
        axis.title = element_text(size = 16),  # Adjust the title font size
        axis.text = element_text(size = 10),  # Adjust the axis text font size
        axis.ticks = element_line(size = 0.8),
        axis.title.y.left=element_text(color="black", size=14),
        axis.text.y.left=element_text(color="black", size=12),
        axis.title.y.right=element_text(color="black", size=14),
        axis.text.y.right=element_text(color="black", size=14),
        axis.text.x=element_text(size=12),
        axis.title.x=element_text(size=16),
        plot.title = element_text(hjust = 0.5, size = 16, face = "bold")) +  # Adjust the axis ticks size
  scale_x_continuous(labels = scales::comma) +
  labs(y='', x="Prediction Error (%)") 
Warning: Duplicated aesthetics after name standardisation: fillWarning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
Please use `linewidth` instead.Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
Please use the `linewidth` argument instead.
plot_perc_error_community

Setting g

BMS

# Fit model
fit.bayesreg <- modelSelection(price ~ ., data=train_df, priorCoef=zellnerprior(taustd =  1), priorDelta=modelbbprior(1,1), niter=5000)
Greedy searching posterior mode... Done.
Running Gibbs sampler.
# Convergence checks 
margppest= matrix(NA,nrow=nrow(fit.bayesreg$postSample),ncol=ncol(fit.bayesreg$postSample))
for (j in 1:ncol(fit.bayesreg$postSample)) {
    margppest[,j]= cumsum(fit.bayesreg$postSample[,j])/(1:nrow(fit.bayesreg$postSample))
}

par(mar=c(4,5,.1,.1), cex.lab=1, cex.axis=1)
plot(margppest[,1], type='l', ylim=c(0,1), xlab='Gibbs iteration', ylab='Estimated P(gamma_j=1 | y)')
for (j in 2:ncol(margppest)) lines(margppest[,j])
# Make predictions
bayes_pred= predict(fit.bayesreg, data = x_train_df, newdata =x_test_df)

# RMSE
rmse_value <- rmse(y_test, bayes_pred)
print(rmse_value) # 211412.2

# Calculate MAPE
mape <- mean(abs((y_test - bayes_pred) / y_test)) * 100
print(mape)
# Prepare data 
test_graph$bayes_pred_25 <- bayes_pred[,2]
test_graph$bayes_pred_975 <- bayes_pred[,3]
test_graph$bayes_pred <- bayes_pred[,1]
test_graph$perc_error_bayes <- abs((test_graph$price - test_graph$bayes_pred) / test_graph$price) * 100
test_graph$perc_error_bayes <- (test_graph$price - test_graph$bayes_pred) 

# New column to determine color
test_graph$color <- ifelse(test_graph$price > test_graph$bayes_pred_25 & test_graph$price < test_graph$bayes_pred_975, "#1f77b4", "red")

# Graph percentage error bayes with color condition
plot_perc_error_bayes <- ggplot(test_graph, aes(x = price, y = perc_error_bayes, color = color)) +
  theme_minimal() +
  geom_point(size = 0.5) +  # Scatter plot points
  xlab("Price") +
  ylab("Percentage Error") +
  theme(legend.position = "none",
        text = element_text(size = 16),  # Adjust the font size here
        axis.title = element_text(size = 16),  # Adjust the title font size
        axis.text = element_text(size = 10)) +  # Adjust the axis text font size
  scale_x_continuous(labels = scales::comma) +
  scale_color_identity()  # Use the actual colors specified in the data frame

plot_perc_error_bayes
freq_table_colour<- table(test_graph$color)
freq_table_colour
#Prepare data
test_graph_sorted<- test_graph %>% arrange(price) %>% mutate(obs = seq(1:length(price)))
test_graph_dt_2 <- test_graph_sorted %>% as.data.table
test_graph_dt_2[, community := 'Dubai Marina']
test_graph_dt_2<- test_graph_dt_2 %>%
  .[community_Jumeirah.Beach.Residence..JBR.==T, community := 'Jumeirah Beach \n Residence (JBR)'] %>%
  .[community_Jumeirah.Lake.Towers..JLT.==T, community := 'Jumeirah Lake \n Towers (JLT)'] %>%
  .[community_Jumeirah.Village.Circle..JVC.==T, community := 'Jumeirah Village \n Circle (JVC)']

# Assuming 'community' is the column name that contains the community information
filtered_data <- test_graph_dt_2 %>% 
  filter(grepl("JVC", community))

# Define colors for actual and prediction points
colors <- c('actual' = 'blue', 'prediction' = 'red')

# Create the plot
ggplot(filtered_data, aes(x = seq_along(price), y = price)) + 
  geom_point(aes(color = 'actual'), size = 0.1) + 
  geom_point(aes(y = bayes_pred, color = 'prediction'), size = 0.1) + 
    geom_errorbar(aes(ymin = bayes_pred_25, ymax = bayes_pred_975), width = 0.01) + 
  labs(x = "Observation number (ranked)", 
       y = "Price and Bayesian Prediction", 
       color = "Legend") +
  scale_color_manual(values = colors) + 
  ggtitle('Credible Intervals for Predictions with BMA')
coef(fit.bayesreg)
coef(fit.bayesreg)[order(coef(fit.bayesreg)[,4], decreasing = TRUE),]
LS0tCnRpdGxlOiAiUHJvamVjdCA1LzEyIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCmBgYHtyfQpybShsaXN0ID0gbHMoKSkKYGBgCgojIEluc3RhbGwgcGFja2FnZXMKYGBge3J9CmxpYnJhcnkobW9tYmYpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkoZ2dzY2kpCmxpYnJhcnkoaGRtKQpsaWJyYXJ5KGdsbW5ldCkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShIRENJKQpsaWJyYXJ5KGdyaWRFeHRyYSkKbGlicmFyeShwUk9DKQpsaWJyYXJ5KCJhZGFwdDRwdiIpCmxpYnJhcnkocmVhZHIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGRhdGEudGFibGUpCmxpYnJhcnkoc3RyaW5ncikKbGlicmFyeShyZWFkcikKbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKIyMgUHJlcAojIyBMb2FkIGRhdGEKYGBge3J9CiMgTG9hZCBkYXRhCkRJUiA8LSAnL1VzZXJzL2pvbm55Y29kZC9Eb2N1bWVudHMvTUFTVEVSUy9TdGF0aXN0aWNhbCBNb2RlbGluZyBhbmQgSW5mZXJlbmNlL1Byb2plY3QvZGF0YScKCnJhd190cmFpbiA8LSByZWFkLmNzdihmaWxlLnBhdGgoRElSLCAncmVhbGVzdGF0ZV90cmFpbi5jc3YnKSkKcmF3X3Rlc3QgPC0gcmVhZC5jc3YoZmlsZS5wYXRoKERJUiwgJ3JlYWxlc3RhdGVfdGVzdC5jc3YnKSkKCiMgRHJvcCBYIApyYXdfdHJhaW4kWCA8LSBOQQpyYXdfdGVzdCRYIDwtIE5BCmBgYAoKYGBge3J9Cm5fYWRkcmVzc2VzIDwtIDEwCmR1bW15X2FkZHJlc3NlcyA8LSBUCmR1bW15X3N1YmRpc3RyaWN0cyA8LSBUCmR1bW15X2Nvb3JkaW5hdGVzIDwtIEYKc3F1YXJlX2NvcmRpbmF0ZXMgPC0gVApxY3V0cyA8LSAxMDAKZHJvcF9wcmV2X3ByaWNlcyA8LSBUCgpsb2dfcHJpY2UgPC0gVApgYGAKCmBgYHtyfQojIEZpbHRlciBhZGRyZXNzZXMKYWRkcmVzc19jb3VudHMgPC0gcmF3X3RyYWluICU+JSBjb3VudChhZGRyZXNzX3NpbXBsZSkKc2VsZWN0ZWRfYWRkcmVzc2VzIDwtIGFkZHJlc3NfY291bnRzW2FkZHJlc3NfY291bnRzJG4gPiBuX2FkZHJlc3NlcywgXSRhZGRyZXNzX3NpbXBsZQoKY2F0KCdUcmFpbiBzaXplIGJlZm9yZScsIGRpbShyYXdfdHJhaW4pLCAnOiBhZnRlcicsIGRpbShyYXdfdHJhaW5bcmF3X3RyYWluJGFkZHJlc3Nfc2ltcGxlICVpbiUgc2VsZWN0ZWRfYWRkcmVzc2VzLCBdKSkKcmF3X3RyYWluIDwtIHJhd190cmFpbltyYXdfdHJhaW4kYWRkcmVzc19zaW1wbGUgJWluJSBzZWxlY3RlZF9hZGRyZXNzZXMsIF0KCmNhdCgnVHJhaW4gc2l6ZSBiZWZvcmUnLCBkaW0ocmF3X3Rlc3QpLCAnOiBhZnRlcicsIGRpbShyYXdfdGVzdFtyYXdfdGVzdCRhZGRyZXNzX3NpbXBsZSAlaW4lIHNlbGVjdGVkX2FkZHJlc3NlcywgXSkpCnJhd190ZXN0IDwtIHJhd190ZXN0W3Jhd190ZXN0JGFkZHJlc3Nfc2ltcGxlICVpbiUgc2VsZWN0ZWRfYWRkcmVzc2VzLCBdCmBgYAoKIyMgQWRkcmVzcyBkdW1taWVzCgpgYGB7cn0KZ2VuZXJhdGVfZHVtbWllcyA8LSBmdW5jdGlvbih0cmFpbiwgdGVzdCwgY29sdW1uKSB7CiAgIyBDb21iaW5lIHRyYWluIGFuZCB0ZXN0CiAgY29tYmluZWRfZGF0YSA8LSByYmluZCh0cmFpbiwgdGVzdCkKICAKICAjIENyZWF0aW5nIGR1bW15IHZhcmlhYmxlcyAoYXNzdW1pbmcgJ2NhdGVnb3J5JyBpcyB5b3VyIGNhdGVnb3JpY2FsIGNvbHVtbikKICBjb21iaW5lZF9kYXRhX2R1bW15IDwtIG1vZGVsLm1hdHJpeCh+IGdldChjb2x1bW4pIC0gMSwgY29tYmluZWRfZGF0YSkKICAKICBjb2xfbmFtZXMgPC0gc3RyaW5ncjo6c3RyX3JlcGxhY2UoY29sbmFtZXMoY29tYmluZWRfZGF0YV9kdW1teSksICJnZXRcXChjb2x1bW5cXCkiLCBwYXN0ZTAoY29sdW1uLCAnXycpKQogICNwcmludChjb2xfbmFtZXMpCiAgY29sbmFtZXMoY29tYmluZWRfZGF0YV9kdW1teSkgPC0gY29sX25hbWVzCiAgCiAgIyBTcGxpdHRpbmcgYmFjayBpbnRvIHRyYWluaW5nIGFuZCB0ZXN0aW5nIHNldHMKICB0cmFpbl9yb3dzIDwtIG5yb3codHJhaW4pCiAgeF90cmFpbl9kdW1teSA8LSBjb21iaW5lZF9kYXRhX2R1bW15WzE6dHJhaW5fcm93cywgXQogIHhfdGVzdF9kdW1teSA8LSBjb21iaW5lZF9kYXRhX2R1bW15Wyh0cmFpbl9yb3dzICsgMSk6bnJvdyhjb21iaW5lZF9kYXRhX2R1bW15KSwgXQogIAogICMgQWRkIHRoZSBkdW1teSB2YXJpYWJsZXMgdG8gdGhlIG9yaWdpbmFsIGRhdGFmcmFtZXMKICB0cmFpbiA8LSBjYmluZCh0cmFpbiwgeF90cmFpbl9kdW1teSkKICB0ZXN0IDwtIGNiaW5kKHRlc3QsIHhfdGVzdF9kdW1teSkKICAKICByZXR1cm4obGlzdCh0cmFpbiA9IHRyYWluLCB0ZXN0ID0gdGVzdCkpCn0KCmlmIChkdW1teV9hZGRyZXNzZXMpIHsKICByZXN1bHQgPC0gZ2VuZXJhdGVfZHVtbWllcyhyYXdfdHJhaW4sIHJhd190ZXN0LCAnYWRkcmVzc19zaW1wbGUnKQogIHJhd190cmFpbiA8LSByZXN1bHQkdHJhaW4KICByYXdfdGVzdCA8LSByZXN1bHQkdGVzdCAgCn0KYGBgCgojIyBTdWJkaXN0cmljdCBkdW1taWVzIAoKYGBge3J9Cm9idGFpbl9zdWJkaXN0cmljdCA8LSBmdW5jdGlvbihkZikgewogIGRmJHN1YmRpc3RyaWN0IDwtIHNhcHBseShzdHJzcGxpdChkZiRhZGRyZXNzX3NpbXBsZSwgIixcXHMqIiksIGZ1bmN0aW9uKHgpIHhbWzJdXSkKICBkZltkZiRzdWJkaXN0cmljdCA9PSAnRHViYWknLCAnc3ViZGlzdHJpY3QnXSA8LSBzYXBwbHkoc3Ryc3BsaXQoZGZbZGYkc3ViZGlzdHJpY3QgPT0gJ0R1YmFpJywgJ2FkZHJlc3Nfc2ltcGxlJ10sICIsXFxzKiIpLCBmdW5jdGlvbih4KSB4W1sxXV0pICAKICAKICByZXR1cm4oZGYpCn0KCmlmIChkdW1teV9zdWJkaXN0cmljdHMpIHsKICByYXdfdHJhaW4gPC0gb2J0YWluX3N1YmRpc3RyaWN0KHJhd190cmFpbikKICByYXdfdGVzdCA8LSBvYnRhaW5fc3ViZGlzdHJpY3QocmF3X3Rlc3QpCiAgCiAgcmVzdWx0IDwtIGdlbmVyYXRlX2R1bW1pZXMocmF3X3RyYWluLCByYXdfdGVzdCwgJ3N1YmRpc3RyaWN0JykKICByYXdfdHJhaW4gPC0gcmVzdWx0JHRyYWluCiAgcmF3X3Rlc3QgPC0gcmVzdWx0JHRlc3QgIAp9CmBgYAoKIyMgQ29vcmRpbmF0ZXMKYGBge3J9CmRvX3F1YW50aWxlcyA8LSBmdW5jdGlvbihkYXRhLCBxdWFudGlsZXMsIHByZWZpeCkgewogICAgY3V0cyA8LSBjdXQoZGF0YSwgcXVhbnRpbGVzLCBpbmNsdWRlLmxvd2VzdCA9IFQpCiAgICBjdXRzIDwtIHBhc3RlMChwcmVmaXgsIGN1dHMpCiAgICByZXR1cm4oY3V0cykKfQogIApjb21iaW5lZF9kYXRhIDwtIHJiaW5kKHJhd190cmFpbiwgcmF3X3Rlc3QpCgojIEZ1bmN0aW9uIHRvIGFzc2lnbiBzdWJyZWdpb25zCmFzc2lnbl9zdWJyZWdpb24gPC0gZnVuY3Rpb24oZGF0YSwgbGF0X2JyZWFrcywgbG9uZ19icmVha3MpIHsKICBkYXRhJHN1YnJlZ2lvbiA8LSB3aXRoKGRhdGEsIHBhc3RlKAogICAgY3V0KGxhdCwgYnJlYWtzID0gbGF0X2JyZWFrcywgbGFiZWxzID0gRkFMU0UsIGluY2x1ZGUubG93ZXN0ID0gVFJVRSksCiAgICBjdXQobG9uLCBicmVha3MgPSBsb25nX2JyZWFrcywgbGFiZWxzID0gRkFMU0UsIGluY2x1ZGUubG93ZXN0ID0gVFJVRSksCiAgICBzZXAgPSAiXyIKICApKQogIHJldHVybihkYXRhKQp9CgppZiAoc3F1YXJlX2NvcmRpbmF0ZXMpewogIAogICMgTGF0CiAgbGF0X3F1YW50aWxlcyA8LSB1bmlxdWUocXVhbnRpbGUoY29tYmluZWRfZGF0YSRsYXQsIDA6cWN1dHMvcWN1dHMpKQogICNjb21iaW5lZF9kYXRhJGxhdF9jdXRzIDwtIGRvX3F1YW50aWxlcyhjb21iaW5lZF9kYXRhJGxhdCwgcXVhbnRpbGVzLCAnbGF0XycpCgogICMgTG9uCiAgbG9uX3F1YW50aWxlcyA8LSB1bmlxdWUocXVhbnRpbGUoY29tYmluZWRfZGF0YSRsb24sIDA6cWN1dHMvcWN1dHMpKQogICNjb21iaW5lZF9kYXRhJGxvbl9jdXRzIDwtIGRvX3F1YW50aWxlcyhjb21iaW5lZF9kYXRhJGxvbiwgcXVhbnRpbGVzLCAnbG9uXycpCiAgCiAgIyBBc3NpZ24gc3VicmVnaW9ucyB0byBib3RoIGRhdGFzZXRzCiAgcmF3X3RyYWluIDwtIGFzc2lnbl9zdWJyZWdpb24ocmF3X3RyYWluLCBsYXRfcXVhbnRpbGVzLCBsb25fcXVhbnRpbGVzKQogIHJhd190ZXN0IDwtIGFzc2lnbl9zdWJyZWdpb24ocmF3X3Rlc3QsIGxhdF9xdWFudGlsZXMsIGxvbl9xdWFudGlsZXMpCgogIHJlc3VsdCA8LSBnZW5lcmF0ZV9kdW1taWVzKHJhd190cmFpbiwgcmF3X3Rlc3QsICdzdWJyZWdpb24nKQogIHJhd190cmFpbiA8LSByZXN1bHQkdHJhaW4KICByYXdfdGVzdCA8LSByZXN1bHQkdGVzdCAgCiAgICAKfQoKaWYgKGR1bW15X2Nvb3JkaW5hdGVzKSB7CiAgIyBMYXQKICBxdWFudGlsZXMgPC0gdW5pcXVlKHF1YW50aWxlKGNvbWJpbmVkX2RhdGEkbGF0LCAwOnFjdXRzL3FjdXRzKSkKICByYXdfdHJhaW4kbGF0X2N1dHMgPC0gZG9fcXVhbnRpbGVzKHJhd190cmFpbiRsYXQsIHF1YW50aWxlcywgJ2xhdF8nKQogIHJhd190ZXN0JGxhdF9jdXRzIDwtIGRvX3F1YW50aWxlcyhyYXdfdGVzdCRsYXQsIHF1YW50aWxlcywgJ2xhdF8nKQogICAgCiAgIyBMb24KICBxdWFudGlsZXMgPC0gdW5pcXVlKHF1YW50aWxlKGNvbWJpbmVkX2RhdGEkbG9uLCAwOnFjdXRzL3FjdXRzKSkKICByYXdfdHJhaW4kbG9uX2N1dHMgPC0gZG9fcXVhbnRpbGVzKHJhd190cmFpbiRsb24sIHF1YW50aWxlcywgJ2xvbl8nKQogIHJhd190ZXN0JGxvbl9jdXRzIDwtIGRvX3F1YW50aWxlcyhyYXdfdGVzdCRsb24sIHF1YW50aWxlcywgJ2xvbl8nKQoKCiAgIyBMYXQKICByZXN1bHQgPC0gZ2VuZXJhdGVfZHVtbWllcyhyYXdfdHJhaW4sIHJhd190ZXN0LCAnbGF0X2N1dHMnKQogIHJhd190cmFpbiA8LSByZXN1bHQkdHJhaW4KICByYXdfdGVzdCA8LSByZXN1bHQkdGVzdCAgCiAgCiAgIyBMb24KICByZXN1bHQgPC0gZ2VuZXJhdGVfZHVtbWllcyhyYXdfdHJhaW4sIHJhd190ZXN0LCAnbG9uX2N1dHMnKQogIHJhd190cmFpbiA8LSByZXN1bHQkdHJhaW4KICByYXdfdGVzdCA8LSByZXN1bHQkdGVzdCAgCn0KYGBgCgpgYGB7cn0KdGVzdCA8LSByYXdfdGVzdCAKdHJhaW4gPC1yYXdfdHJhaW4KCiMgQ29udmVydCBkYXRlIHRvIG51bWVyaWMKdHJhaW4kZGF0ZV9hZGRlZCA8LSBhcy5EYXRlKHRyYWluJGRhdGVfYWRkZWQpCgojIEtlZXAgbnVtZXJpYyBjb2x1bW5zCm51bWVyaWMgPC0gc2FwcGx5KHRyYWluLCBpcy5udW1lcmljKQpudW1lcmljX3Rlc3QgPC0gc2FwcGx5KHRyYWluLCBpcy5udW1lcmljKQoKdHJhaW4gPC0gdHJhaW5bLCBudW1lcmljXQp0ZXN0IDwtIHRlc3RbLCBudW1lcmljXQoKIyBSZW1vdmUgY29sdW1ucyB3aXRoIDAgdmFyaWFuY2UgCnRlc3Q9IHRlc3RbLGFwcGx5KHRlc3QsIDIsIHZhcikgPiAwXSAjcmVtb3ZlIGNvbHVtbnMgd2l0aCAwIHZhcmlhbmNlCnRyYWluPSB0cmFpblssYXBwbHkodHJhaW4sIDIsIHZhcikgPiAwXSAjcmVtb3ZlIGNvbHVtbnMgd2l0aCAwIHZhcmlhbmNlCgpjYXQoZGltKHRyYWluKSwgZGltKHRlc3QpKQoKIyBUbyBoYXZlIHNhbWUgY29sdW1ucyBpbiB0cmFpbiBhbmQgdGVzdAp0cmFpbiA8LSB0cmFpblssIGludGVyc2VjdChuYW1lcyh0cmFpbiksIG5hbWVzKHRlc3QpKV0KdGVzdCA8LSB0ZXN0WywgaW50ZXJzZWN0KG5hbWVzKHRyYWluKSwgbmFtZXModGVzdCkpXQoKY2F0KGRpbSh0cmFpbiksIGRpbSh0ZXN0KSkKYGBgCiMgQ3JlYXRlIGFkZGl0aW9uYWwgdmFyaWFibGVzCgppbnRlcmFjdGlvbiB0ZXJtcwpgYGB7cn0KIyBEZWZpbmUgY3JlYXRlIGludGVyYWN0aW9ucyB0ZXJtcyBmdW5jdGlvbgpjcmVhdGVfaW50ZXJhY3Rpb25fdGVybXMgPC0gZnVuY3Rpb24oZGF0YSwgdmFyaWFibGVzKSB7CiAgICAjIElkZW50aWZ5IGNvbHVtbnMgdGhhdCBzdGFydCB3aXRoICJjb21tdW5pdHlfIgogICAgc3ViZGlzdHJpY3RfY29scyA8LSBncmVwKCJeY29tbXVuaXR5XyIsIG5hbWVzKGRhdGEpLCB2YWx1ZSA9IFRSVUUpCgogICAgIyBMb29wIG92ZXIgdGhlc2UgY29sdW1ucyBhbmQgY3JlYXRlIGludGVyYWN0aW9uIHRlcm1zCiAgICBmb3IoY29sIGluIHN1YmRpc3RyaWN0X2NvbHMpIHsKICAgICAgICBmb3IodmFyIGluIHZhcmlhYmxlcykgewogICAgICAgICAgICAjIENoZWNrIGlmIHRoZSB2YXJpYWJsZSBleGlzdHMgaW4gdGhlIGRhdGEKICAgICAgICAgICAgaWYodmFyICVpbiUgbmFtZXMoZGF0YSkpIHsKICAgICAgICAgICAgICAgICMgQ3JlYXRlIGludGVyYWN0aW9uIHRlcm0gYW5kIGFkZCBpdCB0byB0aGUgZGF0YQogICAgICAgICAgICAgICAgZGF0YVtwYXN0ZTAoY29sLCAiXyIsIHZhcildIDwtIGRhdGFbLCBjb2xdICogZGF0YVssIHZhcl0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcocGFzdGUoIlZhcmlhYmxlIiwgdmFyLCAibm90IGZvdW5kIGluIGRhdGFmcmFtZS4gU2tpcHBpbmcuIikpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAjIFJldHVybiB0aGUgbW9kaWZpZWQgZGF0YWZyYW1lCiAgICByZXR1cm4oZGF0YSkKfQoKIyBEZWZpbmUgdGhlIGxpc3Qgb2YgdmFyaWFibGVzIGZvciBpbnRlcmFjdGlvbgp2YXJpYWJsZXNfdG9faW50ZXJhY3QgPC0gYygiYmVkcyIsICJhcmVhIiwgImJhdGhzIiwgImJhbGNvbnkiLCAicGFya2luZyIsICJzd2ltbWluZ19wb29sIiwgImZ1cm5pc2hlZCIpCgojIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggeW91ciBkYXRhZnJhbWUgYW5kIHRoZSBsaXN0IG9mIHZhcmlhYmxlcwp0cmFpbiA8LSBjcmVhdGVfaW50ZXJhY3Rpb25fdGVybXModHJhaW4sIHZhcmlhYmxlc190b19pbnRlcmFjdCkKdGVzdCA8LSBjcmVhdGVfaW50ZXJhY3Rpb25fdGVybXModGVzdCwgdmFyaWFibGVzX3RvX2ludGVyYWN0KQpgYGAKCnNxdWFyZWQgdmFycwpgYGB7cn0KdHJhaW4kYXJlYV9zcSA8LSB0cmFpbiRhcmVhXjIKdGVzdCRhcmVhX3NxIDwtIHRlc3QkYXJlYV4yCgp0cmFpbiRiZWRfc3EgPC0gdHJhaW4kYmVkXjIKdGVzdCRiZWRfc3EgPC0gdGVzdCRiZWReMgoKdHJhaW4kYmF0aHNfc3EgPC0gdHJhaW4kYmF0aHNeMgp0ZXN0JGJhdGhzX3NxIDwtIHRlc3QkYmF0aHNeMgpgYGAKCgojIyBSZW1vdmUgaGlnaGx5IGNvcnJlbGF0ZWQgdmFyaWFibGVzCmBgYHtyfQojIENoZWNrIGZvciBjb3JyZWxhdGlvbgpjb3JyZWxhdGlvbl9tYXRyaXggPC0gY29yKHRyYWluKQpoaWdoX2NvcnJlbGF0aW9uIDwtIHdoaWNoKGFicyhjb3JyZWxhdGlvbl9tYXRyaXgpID4gMC45OSwgYXJyLmluZCA9IFRSVUUpCgojIFJldHVybiB3aGljaCB2YXJpYWJsZXMgYXJlIGdldHRpbmcgcmVtb3ZleApoaWdoX2NvcnJlbGF0aW9uIDwtIGhpZ2hfY29ycmVsYXRpb25baGlnaF9jb3JyZWxhdGlvblssIDFdIDwgaGlnaF9jb3JyZWxhdGlvblssIDJdLCBdCnBhaXJzX3RvX3JlbW92ZSA8LSBhcHBseShoaWdoX2NvcnJlbGF0aW9uLCAxLCBmdW5jdGlvbihpbmRleCkgewogIHBhaXIgPC0gY29sbmFtZXModHJhaW4pW2luZGV4XQogICNjYXQoIkhpZ2ggY29ycmVsYXRpb24gYmV0d2VlbjoiLCBwYWlyWzFdLCAiYW5kIiwgcGFpclsyXSwgIlxuIikKICAjY2F0KCJSZW1vdmluZzoiLCBwYWlyWzJdLCAiXG5cbiIpCiAgcmV0dXJuKHBhaXJbMl0pCn0pCgojIFJlbW92ZQp0ZXN0IDwtIHRlc3RbLCAhY29sbmFtZXModGVzdCkgJWluJSBwYWlyc190b19yZW1vdmVdCnRyYWluIDwtIHRyYWluWywgIWNvbG5hbWVzKHRyYWluKSAlaW4lIHBhaXJzX3RvX3JlbW92ZV0KYGBgCgoKIyMgUHJlcGFyZSBkYXRhZnJhbWVzCgpgYGB7cn0KIyBTcGxpdCBpbnRvIFggYW5kIFkgZm9yIHNjYWxpbmcKeF90cmFpbiA8LSBzZWxlY3QodHJhaW4sIC1wcmljZSkKCm51bV9zY2FsZSA8LSAxICMgdG8gbWFrZSB3ZWlnaHRzIG1vcmUgaW50ZXJwcmV0YWJsZQp5X3RyYWluX29yaWcgPC0gdHJhaW4kcHJpY2UvbnVtX3NjYWxlCmlmIChsb2dfcHJpY2UpIHsKICB5X3RyYWluIDwtIGxvZyh0cmFpbiRwcmljZS9udW1fc2NhbGUpCn0gZWxzZXsKICB5X3RyYWluIDwtIHRyYWluJHByaWNlL251bV9zY2FsZQp9Cgp4X3Rlc3QgPC0gc2VsZWN0KHRlc3QsIC1wcmljZSkKeV90ZXN0X29yaWcgPC0gdGVzdCRwcmljZS9udW1fc2NhbGUKaWYgKGxvZ19wcmljZSkgewogIHlfdGVzdCA8LSBsb2codGVzdCRwcmljZS9udW1fc2NhbGUpCn0gZWxzZXsKICB5X3Rlc3QgPC0gdGVzdCRwcmljZS9udW1fc2NhbGUKfQoKIyBTYXZlIHVuc2NhbGVkCnhfdHJhaW5fdW5zY2FsZWQgPC0geF90cmFpbgp4X3Rlc3RfdW5zY2FsZWQgPC0geF90ZXN0CgojIFNjYWxlIAp4X3RyYWluIDwtIHNjYWxlKHhfdHJhaW4pCnhfdGVzdCA8LSBzY2FsZSh4X3Rlc3QpCgojIENyZWF0ZSBkZnMKeV90cmFpbl9kZiA8LSBkYXRhLmZyYW1lKHlfdHJhaW4pCnhfdHJhaW5fZGYgPC0gZGF0YS5mcmFtZSh4X3RyYWluKQpjb2xuYW1lcyh5X3RyYWluX2RmKTwtJ3ByaWNlJwoKeV90ZXN0X2RmIDwtIGRhdGEuZnJhbWUoeV90ZXN0KQp4X3Rlc3RfZGYgPC0gZGF0YS5mcmFtZSh4X3Rlc3QpCmNvbG5hbWVzKHlfdGVzdF9kZik8LSdwcmljZScKCiMgRHJvcCBzYW1lIHByaWNlIHZhcmlhYmxlcwppZiAoZHJvcF9wcmV2X3ByaWNlcykgewogIHhfdGVzdF9kZiA8LSB4X3Rlc3RfZGYgJT4lIHNlbGVjdCgtY29udGFpbnMoInNhbWUiKSkKICB4X3RyYWluX2RmIDwtIHhfdHJhaW5fZGYgJT4lIHNlbGVjdCgtY29udGFpbnMoInNhbWUiKSkKfQoKdHJhaW5fZGY8LWNiaW5kKHhfdHJhaW5fZGYseV90cmFpbl9kZikKdGVzdF9kZjwtY2JpbmQoeF90ZXN0X2RmLHlfdGVzdF9kZikKYGBgCgojIyBEZWZpbmUgcmVncmVzc2lvbiBtZXRyaWNzCmBgYHtyfQojIFJlZ3Jlc3Npb24gbWV0cmljcwpybXNlIDwtIGZ1bmN0aW9uKG9ic2VydmVkLCBwcmVkaWN0ZWQpIHsKICBzcXJ0KG1lYW4oKG9ic2VydmVkIC0gcHJlZGljdGVkKSBeIDIpKQp9Cgpsb2dfcm1zZSA8LSBmdW5jdGlvbihvYnNlcnZlZCwgcHJlZGljdGVkKSB7CiAgc3FydChtZWFuKChsb2cob2JzZXJ2ZWQpIC0gbG9nKHByZWRpY3RlZCkpIF4gMikpCn0KCm1hcGUgPC0gZnVuY3Rpb24ob2JzZXJ2ZWQsIHByZWRpY3RlZCkgewogIG1lYW4oYWJzKChwcmVkaWN0ZWQgLSBvYnNlcnZlZCkgLyBvYnNlcnZlZCkpICogMTAwCn0KCm1hZSA8LSBmdW5jdGlvbihvYnNlcnZlZCwgcHJlZGljdGVkKSB7CiAgbWVhbihhYnMob2JzZXJ2ZWQgLSBwcmVkaWN0ZWQpKQp9CgojIE1ldHJpY3MgQ1YKcmVncmVzc2lvbl9tZXRyaWNzIDwtIGZ1bmN0aW9uKG1vZGVsLCBkYXRhLCB5X3JlYWwsIG51bV9zY2FsZSwgeV93b3V0X2xvZykgewogCiAgcHJlZCA8LSBwcmVkaWN0KG1vZGVsLCBuZXd4ID0gYXMubWF0cml4KGRhdGEpLCBzID0gZml0Lmxhc3NvJGxhbWJkYS5taW4sIHR5cGUgPSAicmVzcG9uc2UiKQogIAogIGlmIChsb2dfcHJpY2UpIHsKICAgICAgcHJlZCA8LSBleHAocHJlZCkKICAgICAgeV9yZWFsIDwtIHlfd291dF9sb2cKICB9CiAgcm1zZV92YWx1ZSA8LSBybXNlKHlfcmVhbCwgcHJlZCkqbnVtX3NjYWxlCiAgbWFwZSA8LSBtYXBlKHlfcmVhbCwgcHJlZCkKICBtYWUgPC0gbWFlKHlfcmVhbCwgcHJlZCkqbnVtX3NjYWxlCiAgY2F0KCdcblJNU0U6Jywgcm1zZV92YWx1ZSwgJ01BUEU6JywgbWFwZSwgJ01BRTonLCBtYWUpIAogIAogIHJldHVybihsaXN0KHJtc2U9cm1zZV92YWx1ZSwgbWFwZT1tYXBlLCBtYWU9bWFlKSkKfQoKYGBgCgoKYGBge3J9CiNjb2xuYW1lcyh4X3RyYWluX2RmKQpgYGAKCgojIyBTdW1tYXJpemUgZGF0YSAKCmBgYHtyfQojIENhbGN1bGF0ZSBzdGF0aXN0aWNzIGZvciB5X3RyYWluCm5fb2JzX3RyYWluIDwtIGxlbmd0aCh5X3RyYWluX2RmKQptZWFuX3RyYWluIDwtIG1lYW4oeV90cmFpbl9kZikKcXVhcnRpbGVzX3RyYWluIDwtIHF1YW50aWxlKGFzLm1hdHJpeCh5X3RyYWluX2RmKSwgcHJvYnMgPSBjKDAuMjUsIDAuNSwgMC43NSkpCgojIENhbGN1bGF0ZSBzdGF0aXN0aWNzIGZvciB5X3Rlc3QKbl9vYnNfdGVzdCA8LSBsZW5ndGgoeV90ZXN0X2RmKQptZWFuX3Rlc3QgPC0gbWVhbih5X3Rlc3RfZGYpCnF1YXJ0aWxlc190ZXN0IDwtIHF1YW50aWxlKGFzLm1hdHJpeCh5X3Rlc3RfZGYpLCBwcm9icyA9IGMoMC4yNSwgMC41LCAwLjc1KSkKCiMgQ3JlYXRlIHRoZSBkYXRhIGZyYW1lIHdpdGggdGhlIHN0YXRpc3RpY3MKc3RhdHNfdGFibGUgPC0gZGF0YS5mcmFtZSgKICBEYXRhc2V0ID0gYygieV90cmFpbiIsICJ5X3Rlc3QiKSwKICBPYnNlcnZhdGlvbnMgPSBjKG5fb2JzX3RyYWluLCBuX29ic190ZXN0KSwKICBNZWFuID0gYyhtZWFuX3RyYWluLCBtZWFuX3Rlc3QpLAogIGAxc3QgUXVhcnRpbGVgID0gYyhxdWFydGlsZXNfdHJhaW5bMV0sIHF1YXJ0aWxlc190ZXN0WzFdKSwKICBNZWRpYW4gPSBjKHF1YXJ0aWxlc190cmFpblsyXSwgcXVhcnRpbGVzX3Rlc3RbMl0pLAogIGAzcmQgUXVhcnRpbGVgID0gYyhxdWFydGlsZXNfdHJhaW5bM10sIHF1YXJ0aWxlc190ZXN0WzNdKQopCgpzdGF0c190YWJsZV9sb25nIDwtIHN0YXRzX3RhYmxlICU+JSAKICBwaXZvdF9sb25nZXIoY29scyA9IC1EYXRhc2V0LCBuYW1lc190byA9ICJNZXRyaWMiLCB2YWx1ZXNfdG8gPSAiVmFsdWUiKQoKIyBTcHJlYWQgdGhlIGxvbmcgZm9ybWF0IHRhYmxlIHRvIHdpZGUgZm9ybWF0IHdpdGggb25lIGNvbHVtbiBmb3IgeV90cmFpbiBhbmQgb25lIGZvciB5X3Rlc3QKc3RhdHNfdGFibGVfd2lkZSA8LSBzdGF0c190YWJsZV9sb25nICU+JSAKICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gRGF0YXNldCwgdmFsdWVzX2Zyb20gPSBWYWx1ZSkKCiMgQ3JlYXRlIGEgcm90YXRlZCBMYVRlWCBmb3JtYXR0ZWQgdGFibGUKb3V0cHV0X3N0YXRzIDwtIDAKaWYgKG91dHB1dF9zdGF0cyA9PSAxKSB7CiAga2FibGUoc3RhdHNfdGFibGVfd2lkZSwgZm9ybWF0ID0gImxhdGV4IiwgYm9va3RhYnMgPSBUUlVFLCBjYXB0aW9uID0gIkRlc2NyaXB0aXZlIFN0YXRpc3RpY3Mgb2YgeV90cmFpbiBhbmQgeV90ZXN0Iiwgcm93Lm5hbWVzID0gRkFMU0UpICU+JQogIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IEZBTFNFLCBwb3NpdGlvbiA9ICJjZW50ZXIiLCBsYXRleF9vcHRpb25zID0gInN0cmlwZWQiKSAlPiUKICByb3dfc3BlYygwLCBib2xkID0gVFJVRSwgY29sb3IgPSAid2hpdGUiLCBiYWNrZ3JvdW5kID0gIiM1NkI0RTkiKQp9CmBgYAoKIyBMQVNTTyAKCmBgYHtyfQp4X3Rlc3RfZGZbaXMubmEoeF90ZXN0X2RmKV0gPC0gMAp4X3RyYWluX2RmW2lzLm5hKHhfdHJhaW5fZGYpXSA8LSAwCgpjYXQoZGltKHhfdHJhaW5fZGYpKQpgYGAKCgojIyBMQVNTTyBCSUMgCgpgYGB7cn0KbGFzc28uYmljIDwtIGZ1bmN0aW9uKHkseCxleHRlbmRlZD1GQUxTRSkgewogICNTZWxlY3QgbW9kZWwgaW4gTEFTU08gcGF0aCB3aXRoIGJlc3QgQklDICh1c2luZyBMQVNTTyByZWdyZXNzaW9uIGVzdGltYXRlcykKICAjSW5wdXQKICAjIC0geTogdmVjdG9yIHdpdGggcmVzcG9uc2UgdmFyaWFibGUKICAjIC0geDogZGVzaWduIG1hdHJpeAogICMKICAjT3V0cHV0OiBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBlbGVtZW50cwogICMgLSBjb2VmOiBMQVNTTy1lc3RpbWF0ZWQgcmVncmVzc2lvbiBjb2VmZmljaWVudCB3aXRoIGxhbWJkYSBzZXQgdmlhIEJJQwogICMgLSB5cHJlZDogcHJlZGljdGVkIHkKICAjIC0gbGFtYmRhLm9wdDogb3B0aW1hbCB2YWx1ZSBvZiBsYW1iZGEKICAjIC0gbGFtYmRhOiBkYXRhLmZyYW1lIHdpdGggYmljIGFuZCBudW1iZXIgb2Ygc2VsZWN0ZWQgdmFyaWFibGVzIGZvciBlYWNoIHZhbHVlIG9mIGxhbWJkYQogIHJlcXVpcmUoZ2xtbmV0KQogIGZpdCA8LSBnbG1uZXQoeD14LHk9eSxmYW1pbHk9J2dhdXNzaWFuJyxhbHBoYT0xKQogIHByZWQgPC0gY2JpbmQoMSx4KSAlKiUgcmJpbmQoZml0JGEwLGZpdCRiZXRhKQogIG4gPC0gbGVuZ3RoKHkpCiAgcCA8LSBjb2xTdW1zKGZpdCRiZXRhIT0wKSArIDEKICBpZiAoIWV4dGVuZGVkKXsKICAgIGJpYyA8LSBuICogbG9nKGNvbFN1bXMoKHktcHJlZCleMikvbGVuZ3RoKHkpKSArIG4qKGxvZygyKnBpKSsxKSArIGxvZyhuKSpwIAogIH0gZWxzZSB7CiAgICBiaWMgPC0gbiAqIGxvZyhjb2xTdW1zKCh5LXByZWQpXjIpL2xlbmd0aCh5KSkgKyBuKihsb2coMipwaSkrMSkgKyBsb2cobikqcCArIDIqbG9nKGNob29zZShuY29sKHgpLHApKQogIH0KICBzZWwgPC0gd2hpY2gubWluKGJpYykKICBiZXRhIDwtIGMoZml0JGEwW3NlbF0sZml0JGJldGFbLHNlbF0pOyBuYW1lcyhiZXRhKVsxXT0gJ0ludGVyY2VwdCcKICB5cHJlZCA8LSBwcmVkWyxzZWxdCiAgYW5zIDwtIGxpc3QoY29lZj1iZXRhLHlwcmVkPXlwcmVkLGxhbWJkYS5vcHQ9Zml0JGxhbWJkYVtzZWxdLGxhbWJkYT1kYXRhLmZyYW1lKGxhbWJkYT1maXQkbGFtYmRhLGJpYz1iaWMsbnZhcnM9cCkpCiAgcmV0dXJuKGFucykKfQpgYGAKCgpgYGB7cn0KIyBGaXQgbW9kZWwKZml0Lmxhc3NvX2ViaWMgPSBsYXNzby5iaWMoeD1hcy5tYXRyaXgoeF90cmFpbl9kZiksIHk9eV90cmFpbiAsZXh0ZW5kZWQgPSBUUlVFKQpmaXQubGFzc29fZWJpYwpgYGAKCiMjIyBPdXB1dCBjb2VmZmljaWVudHMgCmBgYHtyfQojIEV4dHJhY3QgY29lZmZpY2llbnRzCmNvZWZfbGFzc29fZWJpYyA8LSBmaXQubGFzc29fZWJpYyRjb2VmCmNvZWZfbWF0cml4X2ViaWMgPC0gYXMubWF0cml4KGNvZWZfbGFzc29fZWJpYyoxMDApCgojIE91dHB1dCBub24gemVybyBjb2VmZmljaWVudHMKbm9uX3plcm8gPC0gY29lZl9tYXRyaXhfZWJpYyAhPTAKY29lZl90YWJsZV9lYmljIDwtIGRhdGEuZnJhbWUoVmFyaWFibGUgPSByb3duYW1lcyhjb2VmX21hdHJpeF9lYmljKVtub25femVyb10sIENvZWZmaWNpZW50cyA9IGNvZWZfbWF0cml4X2ViaWNbbm9uX3plcm9dKQpjb2VmX3RhYmxlX2ViaWMgPC0gY29lZl90YWJsZV9lYmljW29yZGVyKC1hYnMoY29lZl90YWJsZV9lYmljJENvZWZmaWNpZW50cykpLF0KY29lZl90YWJsZV9lYmljJENvZWZmaWNpZW50cyA8LSByb3VuZChjb2VmX3RhYmxlX2ViaWMkQ29lZmZpY2llbnRzLCBkaWdpdHMgPSA0KQpjb2VmX3RhYmxlX2ViaWMkQ29lZmZpY2llbnRzIDwtIGZvcm1hdChjb2VmX3RhYmxlX2ViaWMkQ29lZmZpY2llbnRzLCBzY2llbnRpZmljID0gRkFMU0UpCmNvZWZfdGFibGVfZWJpY19vdXRwdXQgPC0gY29lZl90YWJsZV9lYmljWzA6MjAsXQpjb2VmX3RhYmxlX2ViaWNfb3V0cHV0CgojIE91dHB1dCB0byBMYXRleApvdXRwdXRfbGFzc29fZWJpYyA8LSBGCmlmIChvdXRwdXRfbGFzc29fZWJpYykgewogIGthYmxlKGNvZWZfdGFibGVfZWJpY19vdXRwdXQsIGZvcm1hdCA9ICJsYXRleCIsIGJvb2t0YWJzID0gVFJVRSwgY2FwdGlvbiA9ICJMQVNTTyBFQklDIFJlZ3Jlc3Npb24gcmVzdWx0cyIsIHJvdy5uYW1lcyA9IEZBTFNFKSAlPiUKICBrYWJsZV9zdHlsaW5nKGZ1bGxfd2lkdGggPSBGQUxTRSwgcG9zaXRpb24gPSAiY2VudGVyIikgJT4lCiAgY29sdW1uX3NwZWMoMSwgYm9yZGVyX3JpZ2h0ID0gVFJVRSkgJT4lCiAgY29sdW1uX3NwZWMoMiwgd2lkdGggPSAiMmVtIikgJT4lCiAgcm93X3NwZWMoMCwgYm9sZCA9IFRSVUUsIGNvbG9yID0gIndoaXRlIiwgYmFja2dyb3VuZCA9ICIjNTZCNEU5IikKfQpgYGAKCgojIyBMQVNTTyBDVgoKIyMgRml0IG1vZGVsCmBgYHtyfQojIEZpdCBtb2RlbApmaXQubGFzc28gPSBjdi5nbG1uZXQoeD1hcy5tYXRyaXgoeF90cmFpbl9kZiksIHk9eV90cmFpbiwgbmZvbGRzPTEwKQpmaXQubGFzc28KYGBgCgojIyNUZXN0IG91dCBvZiBzYW1wbGUKCmBgYHtyfQojIFRFU1Q6IFJNU0U6IDMzMDc3MS4zIE1BUEU6IDE0LjE0NTM3IE1BRTogMTg2NTk4LgpxIDwtIHJlZ3Jlc3Npb25fbWV0cmljcyhmaXQubGFzc28sIHhfdGVzdF9kZiwgeV90ZXN0LCBudW1fc2NhbGUsIHlfdGVzdF9vcmlnKQoKIyBUUkFJTjogUk1TRTogMjIyODc0LjggTUFQRTogMTAuMzc3NTYgTUFFOiAxNDI0MTguMwpxIDwtIHJlZ3Jlc3Npb25fbWV0cmljcyhmaXQubGFzc28sIHhfdHJhaW5fZGYsIHlfdHJhaW4sIG51bV9zY2FsZSwgeV90cmFpbl9vcmlnKQpgYGAKCiMjIyBPdXB1dCBjb2VmZmljaWVudHMgCmBgYHtyfQojIEV4dHJhY3QgY29lZmZpY2llbnRzCmNvZWZfbGFzc28gPC0gcHJlZGljdChmaXQubGFzc28sIHR5cGUgPSAiY29lZmZpY2llbnRzIiwgcyA9IGZpdC5sYXNzbyRsYW1iZGEubWluKQpjb2VmX21hdHJpeCA8LSBhcy5tYXRyaXgoY29lZl9sYXNzbykKCiMgT3V0cHV0IG5vbiB6ZXJvIGNvZWZmaWNpZW50cwpub25femVybyA8LSBjb2VmX21hdHJpeCAhPTAKY29lZl90YWJsZSA8LSBkYXRhLmZyYW1lKFZhcmlhYmxlID0gcm93bmFtZXMoY29lZl9tYXRyaXgpW25vbl96ZXJvXSwgQ29lZmZpY2llbnRzID0gY29lZl9tYXRyaXhbbm9uX3plcm9dKQpjb2VmX3RhYmxlIDwtIGNvZWZfdGFibGVbb3JkZXIoLWFicyhjb2VmX3RhYmxlJENvZWZmaWNpZW50cykpLF0KY29lZl90YWJsZSRDb2VmZmljaWVudHMgPC0gcm91bmQoY29lZl90YWJsZSRDb2VmZmljaWVudHMsIGRpZ2l0cyA9IDQpCmNvZWZfdGFibGUkQ29lZmZpY2llbnRzIDwtIGZvcm1hdChjb2VmX3RhYmxlJENvZWZmaWNpZW50cywgc2NpZW50aWZpYyA9IEZBTFNFKQpjb2VmX3RhYmxlX291dHB1dCA8LSBjb2VmX3RhYmxlWzA6MjAsXQpjb2VmX3RhYmxlX291dHB1dApgYGAKIyMjIE91cHV0IGNvbGxhcHNlZCBjb2VmZnMgCgpgYGB7cn0KIyBHcm91cCBwcmVmaXhlcyBmb3IgcmVncmVzc2lvbiBvdXRwdXQKY29lZl90YWJsZSA8LSBjb2VmX3RhYmxlICU+JQogIG11dGF0ZShwcmVmaXggPSBjYXNlX3doZW4oCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiYWRkcmVzc19zaW1wbGVfIikgfiAiQWRkcmVzcyBpbmRpY2F0b3JzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJBRURfIikgfiAiQUVEIGV4Y2hhbmdlIHJhdGVzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJjb21tXyIpIH4gIkNvbW0gdmFyaWFibGVzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJjb21tdW5pdHlfIikgfiAiQ29tbXVuaXR5IGluZGljYXRvcnMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImVtaXJhdGVfIikgfiAiRW1pcmF0ZSB2YXJpYWJsZXMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImFyZWFfc3EiKSB+ICJBcmVhIHNxdWFyZWQiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImFyZWEiKSB+ICJBcmVhIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJiYWxjb255IikgfiAiIyBCYWxjb255cyIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiYmF0aHNfc3EiKSB+ICIjIEJhbGNvbnlzIHNxdWFyZWQiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImJlZF9zcSIpIH4gIiMgQmVkcyBzcXVhcmVkIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJiZWQiKSB+ICIjIEJlZHMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImZ1cm5pc2hlZCIpIH4gIiMgRnVybmlzaGVkIGluZGljYXRvciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiZ29sZCIpIH4gIkdvbGQgcHJpY2UiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIm1ldHJvIikgfiAiRGlzdGFuY2UgdG8gbWV0cm8iLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgInBhcmtpbmciKSB+ICJQYXJraW5nIGluZGljYXRvciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAibG9uIikgfiAiTG9uZ2l0dWRlIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJnZHAiKSB+ICJHRFAiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImhvc3BpdGFsIikgfiAiRGlzdGFuY2UgdG8gaG9zcGl0YWwiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgInN1YnJlZ2lvbiIpIH4gIlJlZ2lvbiBpbmRpY2F0b3JzIChieSBnZW9ncmFwaGljIGNvb3JkaW5hdGVzKSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAibWFya2V0IikgfiAiRGlzdGFuY2UgdG8gZ3JvY2VyeSBzdG9yZSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAicGFya2luZyIpIH4gIlBhcmtpbmcgaW5kaWNhdG9yIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJzdWJkaXN0cmljdCIpIH4gIlN1YmRpc3RyaWN0IGluZGljYXRvcnMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgInN3aW1taW5nX3Bvb2wiKSB+ICJTd2ltbWluZyBwb29sIGluZGljYXRvciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiVVNEX0JUQyIpIH4gIlVTQy1jcnlwdG8gZXhjaGFuZ2UgcmF0ZSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiKEludGVyY2VwdCkiKSB+ICIoSW50ZXJjZXB0KSIsCiAgICBUUlVFIH4gIk1pc2MiICMgRm9yIGFsbCBvdGhlciBjYXNlcwogICkpCgpgYGAKCgpgYGB7cn0KIyBDb2xsYXBzZSB0aGUgZGF0YWZyYW1lIHRvIG9ubHkga2VlcCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgZWFjaCBwcmVmaXgKIyBhbmQgY291bnQgdGhlIG51bWJlciBvZiB2YXJpYWJsZXMgb2YgZWFjaCB0eXBlCmNvZWZfdGFibGUkQ29lZmZpY2llbnRzIDwtIGFzLm51bWVyaWMoY29lZl90YWJsZSRDb2VmZmljaWVudHMpCmNvbGxhcHNlZF9jb2VmX21hdHJpeCA8LSBjb2VmX3RhYmxlICU+JQogIGdyb3VwX2J5KHByZWZpeCkgJT4lCiAgc3VtbWFyaXNlKE1lYW4gPSBtZWFuKDEwMCpDb2VmZmljaWVudHMpLAogICAgICAgICAgICBNaW4gPSBtaW4oMTAwKkNvZWZmaWNpZW50cyksCiAgICAgICAgICAgIE1heCA9IG1heCgxMDAqQ29lZmZpY2llbnRzKSwKICAgICAgICAgICAgQ291bnQgPSBuKCkpICU+JQogIG11dGF0ZShNZWFuID0gcm91bmQoTWVhbiwgMiksCiAgICAgICAgIE1pbiA9IHJvdW5kKE1pbiwgMiksCiAgICAgICAgIE1heCA9IHJvdW5kKE1heCwgMikpICU+JQogIGFycmFuZ2UoZGVzYyhDb3VudCkpICAjIFNvcnRpbmcgYnkgTWF4IGluIGRlc2NlbmRpbmcgb3JkZXIKCgojIFZpZXcgdGhlIGNvbGxhcHNlZCBkYXRhZnJhbWUKcHJpbnQoY29sbGFwc2VkX2NvZWZfbWF0cml4KQoKIyBPdXRwdXQgdG8gTGF0ZXgKb3V0cHV0X2xhc3NvXzIgPC0gRgppZiAob3V0cHV0X2xhc3NvXzIpIHsKICBrYWJsZShjb2xsYXBzZWRfY29lZl9tYXRyaXgsIGZvcm1hdCA9ICJsYXRleCIsIGJvb2t0YWJzID0gVFJVRSwgY2FwdGlvbiA9ICJMQVNTTyBSZWdyZXNzaW9uIHJlc3VsdHMiLCByb3cubmFtZXMgPSBGQUxTRSkgJT4lCiAga2FibGVfc3R5bGluZyhmdWxsX3dpZHRoID0gRkFMU0UsIHBvc2l0aW9uID0gImNlbnRlciIpICU+JQogIGNvbHVtbl9zcGVjKDEsIGJvcmRlcl9yaWdodCA9IFRSVUUpICU+JQogIGNvbHVtbl9zcGVjKDIsIHdpZHRoID0gIjJlbSIpICU+JQogIHJvd19zcGVjKDAsIGJvbGQgPSBUUlVFLCBjb2xvciA9ICJ3aGl0ZSIsIGJhY2tncm91bmQgPSAiIzU2QjRFOSIpCn0KYGBgCgoKIyMjIEludmVzdGlnYXRlIHBlcmNlbnRhZ2UgZXJyb3IKYGBge3J9CiMgQXZlcmFnZSBwZXJjZW50YWdlIGVycm9yIApwcmVkIDwtIHByZWRpY3QoZml0Lmxhc3NvLCBuZXd4ID0gYXMubWF0cml4KHhfdGVzdF9kZiksIHMgPSBmaXQubGFzc28kbGFtYmRhLm1pbiwgdHlwZSA9ICJyZXNwb25zZSIpCiAgCmlmIChsb2dfcHJpY2UpIHsKICAgIHByZWQgPC0gZXhwKHByZWQpCiAgICB5X3Rlc3QgPC0geV90ZXN0X29yaWcKfQoKY29tcGFyZV9kZiA8LSBkYXRhLmZyYW1lKHlfdGVzdCA9IHlfdGVzdCwgcHJlZGljdGlvbnMgPSBwcmVkKQpjb21wYXJlX2RmJHBlcmNfZXJyb3IgPC0gYWJzKChjb21wYXJlX2RmJHlfdGVzdC1jb21wYXJlX2RmJHMxKS9jb21wYXJlX2RmJHlfdGVzdCkqMTAwCmNvbXBhcmVfZGYkZXJyb3IgPC0gYWJzKGNvbXBhcmVfZGYkczEgLWNvbXBhcmVfZGYkeV90ZXN0KQoKIyBDYWxjdWxhdGUgdGhlIGRlY2lsZXMKZGVjaWxlcyA8LSBxdWFudGlsZShjb21wYXJlX2RmJHBlcmNfZXJyb3IsIHByb2JzID0gc2VxKDAsIDEsIGJ5ID0gMC4xKSwgbmEucm0gPSBUUlVFKQpwcmludChkZWNpbGVzKQpgYGAKCiMjIyBHcmFwaHMgCmBgYHtyfQojIFByZXBhcmUgZGF0YSBmb3IgZ3JhcGhzIAp0ZXN0X2dyYXBoIDwtIGRhdGEuZnJhbWUoeF90ZXN0X3Vuc2NhbGVkKQp0ZXN0X2dyYXBoJHBlcmNfZXJyb3IgPC0gY29tcGFyZV9kZiRwZXJjX2Vycm9yCnRlc3RfZ3JhcGgkZXJyb3IgIDwtIGNvbXBhcmVfZGYkZXJyb3IKCnRlc3RfZ3JhcGgkcHJpY2UgPC0gY29tcGFyZV9kZiR5X3Rlc3QKdGVzdF9ncmFwaCAKYGBgCmBgYHtyfQojIEdyYXBoIGFicyBlcnJvcgpwbG90X2Fic19lcnJvcjwtIGdncGxvdCh0ZXN0X2dyYXBoLCBhZXMoeCA9IHByaWNlLCB5ID0gZXJyb3IpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBnZW9tX3BvaW50KGNvbG9yID0gJyMxZjc3YjQnICxzaXplID0gMC41KSArICAjIFNjYXR0ZXIgcGxvdCBwb2ludHMKICB4bGFiKCJQcmljZSIpICsKICB5bGFiKCJBYnNvbHV0ZSBFcnJvciIpICsgCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiLAogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSBmb250IHNpemUgaGVyZQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSB0aXRsZSBmb250IHNpemUKICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkgKyAgIyBBZGp1c3QgdGhlIGF4aXMgdGV4dCBmb250IHNpemUKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSkgCnBsb3RfYWJzX2Vycm9yCmBgYAoKCmBgYHtyfQojIEdyYXBoIHBlcmNlbnRhZ2UgZXJyb3IKcGxvdF9wZXJjX2Vycm9yPC0gZ2dwbG90KHRlc3RfZ3JhcGgsIGFlcyh4ID0gcHJpY2UsIHkgPSBwZXJjX2Vycm9yKSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgZ2VvbV9wb2ludChjb2xvciA9ICcjMWY3N2I0JyAsc2l6ZSA9IDAuNSkgKyAgIyBTY2F0dGVyIHBsb3QgcG9pbnRzCiAgeGxhYigiUHJpY2UiKSArCiAgeWxhYigiUGVyY2VudGFnZSBFcnJvciIpICsgCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiLAogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSBmb250IHNpemUgaGVyZQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSB0aXRsZSBmb250IHNpemUKICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkgKyAgIyBBZGp1c3QgdGhlIGF4aXMgdGV4dCBmb250IHNpemUKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSkgCnBsb3RfcGVyY19lcnJvcgpgYGAKCmBgYHtyfQojIEdyYXBoIHByZWRpY3Rpb24gZXJyb3IKCiNQcmVwYXJlIGRhdGEKdGVzdF9ncmFwaF9kdCA8LSB0ZXN0X2dyYXBoICU+JSBhcy5kYXRhLnRhYmxlCgp0ZXN0X2dyYXBoX2R0WywgY29tbXVuaXR5IDo9ICdEdWJhaSBNYXJpbmEnXQoKdGVzdF9ncmFwaF9kdDwtIHRlc3RfZ3JhcGhfZHQgJT4lCiAgLltjb21tdW5pdHlfSnVtZWlyYWguQmVhY2guUmVzaWRlbmNlLi5KQlIuPT1ULCBjb21tdW5pdHkgOj0gJ0p1bWVpcmFoIEJlYWNoIFxuIFJlc2lkZW5jZSAoSkJSKSddICU+JQogIC5bY29tbXVuaXR5X0p1bWVpcmFoLkxha2UuVG93ZXJzLi5KTFQuPT1ULCBjb21tdW5pdHkgOj0gJ0p1bWVpcmFoIExha2UgXG4gVG93ZXJzIChKTFQpJ10gJT4lCiAgLltjb21tdW5pdHlfSnVtZWlyYWguVmlsbGFnZS5DaXJjbGUuLkpWQy49PVQsIGNvbW11bml0eSA6PSAnSnVtZWlyYWggVmlsbGFnZSBcbiBDaXJjbGUgKEpWQyknXQoKCiMgUHJvZHVjZSBwbG90CnBsb3RfcGVyY19lcnJvcl9jb21tdW5pdHkgPC0gZ2dwbG90KHRlc3RfZ3JhcGhfZHQsIGFlcyh5PWNvbW11bml0eSwgeD1wZXJjX2Vycm9yLCBjb2xvcj1jb21tdW5pdHkpKSArIAogIGdlb21fdmlvbGluKGFlcyhmaWxsID0gY29tbXVuaXR5LAogICAgICAgICAgICAgICAgICBmaWxsID0gYWZ0ZXJfc2NhbGUoY29sb3JzcGFjZTo6bGlnaHRlbihmaWxsLCAuMikpKSwKICAgICAgICAgICAgICBkcmF3X3F1YW50aWxlcyA9IGMoMC4wNSwgMC4yNSwgMC41LCAwLjc1LCAwLjk1KSwKICAgICAgICAgICAgICBzaXplID0gMC4yLCBzY2FsZT0nd2lkdGgnLCBjb2xvdXIgPSAiYmxhY2siKSArCiAgdGhlbWVfbWluaW1hbCgpICsgCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIiwKICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksICAjIEFkanVzdCB0aGUgZm9udCBzaXplIGhlcmUKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksICAjIEFkanVzdCB0aGUgdGl0bGUgZm9udCBzaXplCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksICAjIEFkanVzdCB0aGUgYXhpcyB0ZXh0IGZvbnQgc2l6ZQogICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoc2l6ZSA9IDAuOCksCiAgICAgICAgYXhpcy50aXRsZS55LmxlZnQ9ZWxlbWVudF90ZXh0KGNvbG9yPSJibGFjayIsIHNpemU9MTQpLAogICAgICAgIGF4aXMudGV4dC55LmxlZnQ9ZWxlbWVudF90ZXh0KGNvbG9yPSJibGFjayIsIHNpemU9MTIpLAogICAgICAgIGF4aXMudGl0bGUueS5yaWdodD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIiwgc2l6ZT0xNCksCiAgICAgICAgYXhpcy50ZXh0LnkucmlnaHQ9ZWxlbWVudF90ZXh0KGNvbG9yPSJibGFjayIsIHNpemU9MTQpLAogICAgICAgIGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChzaXplPTEyKSwKICAgICAgICBheGlzLnRpdGxlLng9ZWxlbWVudF90ZXh0KHNpemU9MTYpLAogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIHNpemUgPSAxNiwgZmFjZSA9ICJib2xkIikpICsgICMgQWRqdXN0IHRoZSBheGlzIHRpY2tzIHNpemUKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSkgKwogIGxhYnMoeT0nJywgeD0iUHJlZGljdGlvbiBFcnJvciAoJSkiKSAKcGxvdF9wZXJjX2Vycm9yX2NvbW11bml0eQpgYGAKCiMgU2V0dGluZyBnIAoKCiMgQk1TCgpgYGB7cn0KIyBGaXQgbW9kZWwKZml0LmJheWVzcmVnIDwtIG1vZGVsU2VsZWN0aW9uKHByaWNlIH4gLiwgZGF0YT10cmFpbl9kZiwgcHJpb3JDb2VmPXplbGxuZXJwcmlvcih0YXVzdGQgPSAgMSksIHByaW9yRGVsdGE9bW9kZWxiYnByaW9yKDEsMSksIG5pdGVyPTUwMDApCmBgYAoKYGBge3J9CiMgQ29udmVyZ2VuY2UgY2hlY2tzIAptYXJncHBlc3Q9IG1hdHJpeChOQSxucm93PW5yb3coZml0LmJheWVzcmVnJHBvc3RTYW1wbGUpLG5jb2w9bmNvbChmaXQuYmF5ZXNyZWckcG9zdFNhbXBsZSkpCmZvciAoaiBpbiAxOm5jb2woZml0LmJheWVzcmVnJHBvc3RTYW1wbGUpKSB7CiAgICBtYXJncHBlc3RbLGpdPSBjdW1zdW0oZml0LmJheWVzcmVnJHBvc3RTYW1wbGVbLGpdKS8oMTpucm93KGZpdC5iYXllc3JlZyRwb3N0U2FtcGxlKSkKfQoKcGFyKG1hcj1jKDQsNSwuMSwuMSksIGNleC5sYWI9MSwgY2V4LmF4aXM9MSkKcGxvdChtYXJncHBlc3RbLDFdLCB0eXBlPSdsJywgeWxpbT1jKDAsMSksIHhsYWI9J0dpYmJzIGl0ZXJhdGlvbicsIHlsYWI9J0VzdGltYXRlZCBQKGdhbW1hX2o9MSB8IHkpJykKZm9yIChqIGluIDI6bmNvbChtYXJncHBlc3QpKSBsaW5lcyhtYXJncHBlc3RbLGpdKQpgYGAKCgpgYGB7cn0KIyBNYWtlIHByZWRpY3Rpb25zCmJheWVzX3ByZWQ9IHByZWRpY3QoZml0LmJheWVzcmVnLCBkYXRhID0geF90cmFpbl9kZiwgbmV3ZGF0YSA9eF90ZXN0X2RmKQoKIyBSTVNFCnJtc2VfdmFsdWUgPC0gcm1zZSh5X3Rlc3QsIGJheWVzX3ByZWQpCnByaW50KHJtc2VfdmFsdWUpICMgMjExNDEyLjIKCiMgQ2FsY3VsYXRlIE1BUEUKbWFwZSA8LSBtZWFuKGFicygoeV90ZXN0IC0gYmF5ZXNfcHJlZCkgLyB5X3Rlc3QpKSAqIDEwMApwcmludChtYXBlKQpgYGAKCmBgYHtyfQojIFByZXBhcmUgZGF0YSAKdGVzdF9ncmFwaCRiYXllc19wcmVkXzI1IDwtIGJheWVzX3ByZWRbLDJdCnRlc3RfZ3JhcGgkYmF5ZXNfcHJlZF85NzUgPC0gYmF5ZXNfcHJlZFssM10KdGVzdF9ncmFwaCRiYXllc19wcmVkIDwtIGJheWVzX3ByZWRbLDFdCnRlc3RfZ3JhcGgkcGVyY19lcnJvcl9iYXllcyA8LSBhYnMoKHRlc3RfZ3JhcGgkcHJpY2UgLSB0ZXN0X2dyYXBoJGJheWVzX3ByZWQpIC8gdGVzdF9ncmFwaCRwcmljZSkgKiAxMDAKdGVzdF9ncmFwaCRwZXJjX2Vycm9yX2JheWVzIDwtICh0ZXN0X2dyYXBoJHByaWNlIC0gdGVzdF9ncmFwaCRiYXllc19wcmVkKSAKCiMgTmV3IGNvbHVtbiB0byBkZXRlcm1pbmUgY29sb3IKdGVzdF9ncmFwaCRjb2xvciA8LSBpZmVsc2UodGVzdF9ncmFwaCRwcmljZSA+IHRlc3RfZ3JhcGgkYmF5ZXNfcHJlZF8yNSAmIHRlc3RfZ3JhcGgkcHJpY2UgPCB0ZXN0X2dyYXBoJGJheWVzX3ByZWRfOTc1LCAiIzFmNzdiNCIsICJyZWQiKQoKIyBHcmFwaCBwZXJjZW50YWdlIGVycm9yIGJheWVzIHdpdGggY29sb3IgY29uZGl0aW9uCnBsb3RfcGVyY19lcnJvcl9iYXllcyA8LSBnZ3Bsb3QodGVzdF9ncmFwaCwgYWVzKHggPSBwcmljZSwgeSA9IHBlcmNfZXJyb3JfYmF5ZXMsIGNvbG9yID0gY29sb3IpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBnZW9tX3BvaW50KHNpemUgPSAwLjUpICsgICMgU2NhdHRlciBwbG90IHBvaW50cwogIHhsYWIoIlByaWNlIikgKwogIHlsYWIoIlBlcmNlbnRhZ2UgRXJyb3IiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSBmb250IHNpemUgaGVyZQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSB0aXRsZSBmb250IHNpemUKICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkgKyAgIyBBZGp1c3QgdGhlIGF4aXMgdGV4dCBmb250IHNpemUKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSkgKwogIHNjYWxlX2NvbG9yX2lkZW50aXR5KCkgICMgVXNlIHRoZSBhY3R1YWwgY29sb3JzIHNwZWNpZmllZCBpbiB0aGUgZGF0YSBmcmFtZQoKcGxvdF9wZXJjX2Vycm9yX2JheWVzCmBgYAoKYGBge3J9CmZyZXFfdGFibGVfY29sb3VyPC0gdGFibGUodGVzdF9ncmFwaCRjb2xvcikKZnJlcV90YWJsZV9jb2xvdXIKYGBgCgpgYGB7cn0KI1ByZXBhcmUgZGF0YQp0ZXN0X2dyYXBoX3NvcnRlZDwtIHRlc3RfZ3JhcGggJT4lIGFycmFuZ2UocHJpY2UpICU+JSBtdXRhdGUob2JzID0gc2VxKDE6bGVuZ3RoKHByaWNlKSkpCnRlc3RfZ3JhcGhfZHRfMiA8LSB0ZXN0X2dyYXBoX3NvcnRlZCAlPiUgYXMuZGF0YS50YWJsZQp0ZXN0X2dyYXBoX2R0XzJbLCBjb21tdW5pdHkgOj0gJ0R1YmFpIE1hcmluYSddCnRlc3RfZ3JhcGhfZHRfMjwtIHRlc3RfZ3JhcGhfZHRfMiAlPiUKICAuW2NvbW11bml0eV9KdW1laXJhaC5CZWFjaC5SZXNpZGVuY2UuLkpCUi49PVQsIGNvbW11bml0eSA6PSAnSnVtZWlyYWggQmVhY2ggXG4gUmVzaWRlbmNlIChKQlIpJ10gJT4lCiAgLltjb21tdW5pdHlfSnVtZWlyYWguTGFrZS5Ub3dlcnMuLkpMVC49PVQsIGNvbW11bml0eSA6PSAnSnVtZWlyYWggTGFrZSBcbiBUb3dlcnMgKEpMVCknXSAlPiUKICAuW2NvbW11bml0eV9KdW1laXJhaC5WaWxsYWdlLkNpcmNsZS4uSlZDLj09VCwgY29tbXVuaXR5IDo9ICdKdW1laXJhaCBWaWxsYWdlIFxuIENpcmNsZSAoSlZDKSddCgojIEFzc3VtaW5nICdjb21tdW5pdHknIGlzIHRoZSBjb2x1bW4gbmFtZSB0aGF0IGNvbnRhaW5zIHRoZSBjb21tdW5pdHkgaW5mb3JtYXRpb24KZmlsdGVyZWRfZGF0YSA8LSB0ZXN0X2dyYXBoX2R0XzIgJT4lIAogIGZpbHRlcihncmVwbCgiSlZDIiwgY29tbXVuaXR5KSkKCiMgRGVmaW5lIGNvbG9ycyBmb3IgYWN0dWFsIGFuZCBwcmVkaWN0aW9uIHBvaW50cwpjb2xvcnMgPC0gYygnYWN0dWFsJyA9ICdibHVlJywgJ3ByZWRpY3Rpb24nID0gJ3JlZCcpCgojIENyZWF0ZSB0aGUgcGxvdApnZ3Bsb3QoZmlsdGVyZWRfZGF0YSwgYWVzKHggPSBzZXFfYWxvbmcocHJpY2UpLCB5ID0gcHJpY2UpKSArIAogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gJ2FjdHVhbCcpLCBzaXplID0gMC4xKSArIAogIGdlb21fcG9pbnQoYWVzKHkgPSBiYXllc19wcmVkLCBjb2xvciA9ICdwcmVkaWN0aW9uJyksIHNpemUgPSAwLjEpICsgCiAgICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gYmF5ZXNfcHJlZF8yNSwgeW1heCA9IGJheWVzX3ByZWRfOTc1KSwgd2lkdGggPSAwLjAxKSArIAogIGxhYnMoeCA9ICJPYnNlcnZhdGlvbiBudW1iZXIgKHJhbmtlZCkiLCAKICAgICAgIHkgPSAiUHJpY2UgYW5kIEJheWVzaWFuIFByZWRpY3Rpb24iLCAKICAgICAgIGNvbG9yID0gIkxlZ2VuZCIpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gY29sb3JzKSArIAogIGdndGl0bGUoJ0NyZWRpYmxlIEludGVydmFscyBmb3IgUHJlZGljdGlvbnMgd2l0aCBCTUEnKQpgYGAKCmBgYHtyfQpjb2VmKGZpdC5iYXllc3JlZykKYGBgCgpgYGB7cn0KY29lZihmaXQuYmF5ZXNyZWcpW29yZGVyKGNvZWYoZml0LmJheWVzcmVnKVssNF0sIGRlY3JlYXNpbmcgPSBUUlVFKSxdCmBgYAoKCg==